selenium自动登录淘宝(设置window.navigator.webdriver为false跳过滑块)
weixin_50971660 2024-07-31 16:33:01 阅读 69
本文章仅供学习。
一、selenium自动登录淘宝在点击登录按钮后,会出现一个滑动验证的控件,人工拖动滑动验证控件,显示验证失败,这是因为淘宝有一套反爬机制识别是否是机器自动在登录。selenium打开的浏览器的window.navigator.webdriver为true。
二、如果是人工打开浏览器登录淘宝就不会弹出滑动验证控件进行验证。正常浏览器打开的window.navigator.webdriver为false
三、代码如下:
<code>from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
from selenium.webdriver import Chrome
def main():
'''
正常的浏览器的window.navigator.webdriver为false
selenium自动打开的浏览器的window.navigator.webdriver为true
淘宝反爬会识别window.navigator.webdriver为true的有滑块验证码,
所以需要设置window.navigator.webdriver为false
'''
driver = Chrome()
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => false
})
"""
})
url = "https://login.taobao.com/member/login.jhtml"
driver.get(url)
driver.implicitly_wait(10)
driver.maximize_window()
WebDriverWait(driver,10).until(EC.visibility_of_element_located(
(By.ID,'fm-login-id'))).send_keys('输入自己的账号')
driver.find_element(By.ID,'fm-login-password').send_keys('输入自己的密码')
driver.find_element(By.CSS_SELECTOR, '.fm-button.fm-submit.password-login').click()
if __name__ == "__main__":
main()
四、遇到问题及方案:
问题1:AttributeError: ‘WebDriver‘ object has no attribute ‘execute_cdp_cmd‘
方案:下载的selenium版本没有execute_cdp_cmd属性,需要卸载selenium重新安装
# 卸载selenium
pip uninstall selenium
# 安装清华镜像 selenium
pip install selenium==4.5.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/
五、参考文档:
1、Python反反爬篇--selenium被检测到的解决办法-CSDN博客
2、Selenium实战-模拟登录淘宝并爬取商品信息_使用selenium爬取淘宝商品-CSDN博客
3、selenium4.15.2 报错Exception managing chrome: error sending request for url 和 打开Chrome浏览器自动退出问题-CSDN博客
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。