爬虫--使用selenium时navigator.webdriver被检测反爬了
可直接看解决办法3
解决办法1:
browser = webdriver.Chrome() url = 'https://login.taobao.com/member/login.jhtml?redirectURL=https://www.taobao.com/' # url = 'https://mms.pinduoduo.com/login?redirectUrl=https://mms.pinduoduo.com/orders/list' browser.get(url) script = 'Object.defineProperties(navigator, {webdriver: {get: () => false,}});' browser.execute_script(script)
此方法可以解决taobao的检测,但是逃不了pinduoduo的检查。
解决办法2:
option = webdriver.ChromeOptions() option.add_experimental_option('excludeSwitches', ['enable-automation']) browser = webdriver.Chrome(options=option) url = 'https://login.taobao.com/member/login.jhtml?redirectURL=https://www.taobao.com/' # url = 'https://mms.pinduoduo.com/login?redirectUrl=https://mms.pinduoduo.com/orders/list' browser.get(url)
此方法都两个网站都通不过,具体原因参考:https://blog.csdn.net/SpringBears/article/details/105596779?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242
文章说是:(我没有验证过文章说的原因是否正确)
ChromeDriver 79.0.3945.36到目前的这些版本(如果不是在无头模式下)就无法通过修改启动配置来达成我们的目的
要想正常使用,得把把Chrome回滚一个版本,并找到对应的ChromeDriver版本。
解决办法3:原文:https://www.cnblogs.com/rnckty/p/12879046.html
browser = webdriver.Chrome() browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { "source": """ Object.defineProperty(navigator, 'webdriver', { get: () => false }) """ }) url = 'https://login.taobao.com/member/login.jhtml?redirectURL=https://www.taobao.com/' # url = 'https://mms.pinduoduo.com/login?redirectUrl=https://mms.pinduoduo.com/orders/list' browser.get(url)
这种方式可解决两个网站的webdriver检测反爬