selenium问卷xing智能验证、滑块、error

说明

第一次爬问卷星,做半天数据处理,好不容易从题库中解析出答案,填完了准备提交收工,结果给我杀出个智能验证,实在是崩溃。终于在网上找到了解决办法和验证原理,突然发现这个方法也可以解决许多不同平台检测的问题。

智能验证

  • 原理
    – 检测基本原理是检测当前浏览器窗口下window.navigator对象中是否包含webdriver这个属性。如果你是采用selenuim自然免不了webdriver,这个时候window.navigator对象中就会包含webdriver属性,但是在我们平常使用浏览器时,这个属性是undefined,一旦被网站上的JS判断出这个属性的不同,就露馅了。。。

  • 解决方式
    – 在加载网页之前加入下行代码

# 这行代码的作用是将webdriver这个属性置为undefined
bro.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'
})
  • 整体的放置位置我举个例子
chrome_options = Options()
# chrome_options.add_argument('--headless')       # 关闭可视化 
chrome_options.add_argument('--disable-gpu')       # 禁用gpu加速
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36',
}

bro = webdriver.Chrome(executable_path='./driver/chromedriver.exe', options=chrome_options)
bro.maximize_window()
# 代码在这,放在get()之前
bro.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'
})
bro.get('www.baidu.com')

滑块、error

点击参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值