我很好奇Recaptcha v3的工作方式。特别是浏览器指纹。
当我通过selenium / chromedriver启动chrome实例并针对ReCaptcha 3(https://recaptcha-demo.appspot.com/recaptcha-v3-request-scores.php)进行测试时,使用selenium /时我总是得到0.1分chromedriver。
在正常实例中使用隐身模式时,我得到0.3。
我通过注入JS并修改Web驱动程序对象并从源代码重新编译WebDriver并修改$ cdc_变量来击败其他检测系统。
我可以看到看起来有些混乱的POST返回到服务器,所以我将开始在那里进行挖掘。
我只是想检查是否有人愿意首先与它分享任何建议或经验,以决定我是否正在运行Selenium / chromedriver?
selenium recaptcha web-scraping selenium-chromedriver recaptcha-v3
我遇到了一个问题,我们的一个网站一直在云中的浏览器中以无头模式要求验证码,所以我将其切换为非无头模式,这样我就可以自己输入验证码,我想下次它会工作,也许是因为一些 cookie 已经被存储了,但即使我输入了几次验证码,它也没有存储。
另外值得一提的是,它在任何模式下都可以在本地运行良好,并且对于非自动化版本,它在云中也运行良好,但是一旦我在任何模式下使用 Selenium 运行它,它就会不断要求验证码。非常感谢任何可能发生的事情和解决方案的想法
selenium captcha webdriver selenium-webdriver webdriver-w3c-spec
我有我在本地机器上使用的代码:
from selenium import webdriver
chrom_path = r"C:\Users\user\sof\chromedriver_win32\chromedriver.exe"
driver = webdriver.Chrome(chrom_path)
link = 'https://www.google.com/'
driver.get(link)
s = driver.page_source
print((s.encode("utf-8")))
driver.quit()
Run Code Online (Sandbox Code Playgroud)
并且此代码返回该网站的页面源,但是当我在Linux服务器centos7上使用此代码时:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
driver = webdriver.Chrome(executable_path="/usr/local/bin/chromedriver", chrome_options=options)
driver.get("https://www.google.com")
s = driver.page_source
print((s.encode("utf-8")))
driver.quit()
Run Code Online (Sandbox Code Playgroud)
这段代码也应该返回页面源代码,但这段代码返回:
b'<html><head>\n<title>Access Denied</title>\n</head><body>\n<h1>Access Denied</h1>\n \nYou don\'t have permission to access "http://www.newark.com/" on this server.<p>\nReference #18.456cd417.1576243477.e007b9f\n\n\n</p></body></html>'
Run Code Online (Sandbox Code Playgroud)
有人知道为什么相同的代码在不同的操作系统上的工作方式不同吗?
python selenium user-agent selenium-chromedriver google-chrome-headless
selenium ×3
captcha ×1
python ×1
recaptcha ×1
recaptcha-v3 ×1
user-agent ×1
web-scraping ×1
webdriver ×1