无法使用 python selenium 登录耐克

Posted

技术标签:

【中文标题】无法使用 python selenium 登录耐克【英文标题】:Cant login into Nike with python selenium 【发布时间】:2021-07-22 05:33:35 【问题描述】:

我知道已经有另一个非常相似的问题,但我的问题有点不同。 问题是,您无法使用 Selenium 登录 Nike。它对我来说一直有效,但不知何故它停止了工作。我正在阅读有关如何绕过它并找到解决方案的信息,只使用较旧的 chrome 版本(我正在使用 chrome 驱动程序)。那行得通,但现在它再也没有了,耐克再次阻止了登录。我使用的旧版本是 79。很久以前对我有用的新版本现在是最新版本是 90。 这是我尝试登录 Nike 的代码:

import time 
from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--disable-blink-features")
chrome_options.add_argument("--disable-blink-features=AutomationControlled")
chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/74.0.3729.169 Safari/537.36")
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options = chrome_options)
driver.get("https://www.nike.com/login")
time.sleep(2)
email = driver.find_element_by_xpath('//input[@type="email"]')
email.send_keys("THE-EMAIL")
password = driver.find_element_by_xpath('//input[@type="password"]')
password.send_keys("THE-PASSWORD")
button = driver.find_element_by_xpath("/html/body/div[2]/div[3]/div[7]/form/div[6]/input")
button.click()

有人知道它为什么会阻塞硒吗?我的意思是我可以手动登录,所以不是因为帐户。

【问题讨论】:

阻止登录”是什么意思?您收到任何错误消息吗? 显示以下内容:发生错误。我们现在无法连接到我们的服务器。请稍后再试。 GENERIC "0 - 对 unite.nike.com/login 的 POST 请求被阻止" 从这里尝试解决方案。我得到了同样的错误。 ***.com/a/62520191/12730112 非常感谢!其中一种解决方案对您有用吗? 大家好,我对这个问题的了解稍微更新一下:Nike 正在使用“Akamai”作为其 Bot-Protection。我不完全知道 akamai 本身是否检测到硒,但我认为是的。似乎没有办法从 akamai 隐藏硒。在下一条评论中阅读更多... 【参考方案1】:

colossatr0n 在这个线程Can a website detect when you are using Selenium with chromedriver? 中给出的解决方案对我有用。这是一个部分副本,想法是用另一个字符串替换 cdc_ 以便不被检测到:

vim /path/to/chromedriver

运行上述代码后,您可能会看到一堆乱码。执行以下操作:

通过键入 :%s/cdc_/dog_/g 将所有 cdc_ 实例替换为 dog_。 dog_ 只是一个例子。您可以选择任何内容,只要它具有与搜索字符串相同数量的字符(例如 cdc_),否则 chromedriver 将失败。 要保存更改并退出,请输入 :wq!然后按回车。 如果您需要退出而不保存更改,请输入 :q!然后按回车键。

我还必须更新该行以获取按钮:

 button = driver.find_element_by_xpath("/html/body/div[4]/div[1]/div[1]/div[1]/div[7]/form/div[6]/input")    

Selenium 成功登录!

【讨论】:

以上是关于无法使用 python selenium 登录耐克的主要内容,如果未能解决你的问题,请参考以下文章

selenium:python如何绕过登录页面登录网页

Python Selenium Webdriver`无法启动浏览器:权限被拒绝`

Selenium / Python:无法使用任何find_element_by_ *方法查找元素

使用 selenium 和 webdriver (chrome) python OSX 在 Instagram 中填写登录表单

Python+Selenium自动化模拟用户登录(备注:记录一次强行卸载rpm依赖包,引发的rpmyum等命令异常,无法远程xftp工具)

Python Selenium“无法定位元素”