gpt4 book ai didi

selenium 反爬虫之跳过淘宝滑块验证功能的实现代码

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章selenium 反爬虫之跳过淘宝滑块验证功能的实现代码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

在处理问题的之前,给大家个第一个锦囊! 。

你需要将chorme更新到最新版版本84,下载对应的chorme驱动 链接:http://chromedriver.storage.googleapis.com/index.html 注意 划重点!!一定要做这一步,因为我用的83的chorme他是不行滴,~~~~~~~ 。

问题 。

1.一周前我的滑块验证代码还是可以OK的,完全没问题!附代码 low一眼 。

  1. url = "https://login.taobao.com/member/login.jhtml"
  2. browser.get(url)
  3. browser.maximize_window() # 最大化
  4.  
  5. # 填写用户名密码
  6. user = '*****'
  7. password = '*******'
  8. time.sleep(8)
  9.  
  10. iframe = browser.find_element_by_xpath('//div[@class="bokmXvaDlH"]//iframe')
  11. print(iframe)
  12. browser.switch_to.frame(iframe)
  13. browser.find_element_by_xpath('//*[@id="fm-login-id"]').send_keys(id)
  14. browser.find_element_by_xpath('//*[@id="fm-login-password"]').send_keys(password)
  15. time.sleep(2)
  16. # 获取滑块的大小
  17. span_background = browser.find_element_by_xpath('//*[@id="nc_1__scale_text"]/span')
  18. span_background_size = span_background.size
  19. print(span_background_size)
  20.  
  21. # 获取滑块的位置
  22. button = browser.find_element_by_xpath('//*[@id="nc_1_n1z"]')
  23. button_location = button.location
  24. print(button_location)
  25.  
  26. # 拖动操作:drag_and_drop_by_offset
  27. # 将滑块的位置由初始位置,右移一个滑动条长度(即为x坐标在滑块位置基础上,加上滑动条的长度,y坐标保持滑块的坐标位置)
  28. x_location = span_background_size["width"]
  29. y_location = button_location["y"]
  30. print(x_location, y_location)
  31. action = ActionChains(browser)
  32. source = browser.find_element_by_xpath('//*[@id="nc_1_n1z"]')
  33. action.click_and_hold(source).perform()
  34. action.move_by_offset(300, 0)
  35. action.release().perform()
  36. time.sleep(1)
  37.  
  38. # 登录
  39. browser.find_element_by_xpath('//*[@id="login-form"]/div[4]/button').click()
  40. print('登录成功\n')

完全可以会很好的进入淘宝,游刃有余 2.淘宝爸爸一周后就给我泼凉水,增加了自己的反爬虫机制,出现如下错误.

selenium 反爬虫之跳过淘宝滑块验证功能的实现代码

刚开始我以为是我频繁登录,导致淘宝的机器人识别我为代码进入。一般之前都是会在30分钟内解封。结果一天之后还是存在这个问题。查阅资料,翻了我的葵花宝典还是没有解决办法。后来看到一个文章,可能是淘宝再次更新了自己对selenium的验证,导致我不在成为漏网之鱼。唉唉唉,导致我3天没有解决。现在我把自己的坑和解决办法给大家分享一哈。成功的再次成为漏网之鱼,哈哈哈! 。

步骤 。

1.首先很多熟悉JS的人都知道淘宝会检测window.navigator.webdriver(js检测特征之一),但是即使设置了"undefined"还是败下来,看看 。

selenium 反爬虫之跳过淘宝滑块验证功能的实现代码

2.这时候细心的就需要观察一下他的全局JS,(这个是我参考别人的思路)你会发现淘宝爸爸在你浏览器内置的JS中有这么一段恐怖的代码 。

selenium 反爬虫之跳过淘宝滑块验证功能的实现代码

就是这个标黄色的东西,不会容易被发现的东西被检测到你是selenium进入,是不是特别坑!那我们接下来就需要干掉他。 3.这个时候仔细想一下,我们是通过什么打开浏览器呢?是的,知道的都会说webdriver.exe这个驱动。那我们就从他开始下手,当你打开webdriver.exe它后你会发现其中的问题! 注意:划重点!!!怎么打开和修改webdriver.exe。很多人都是乱码,之前我看到Windows系统采用nodepad++去打开就可以了,注意我的不行!你们可以试一下。(有的人是可以的,但是我的老师电脑不可以),然后我就找了一个办法,需要大家会一点vim操作,很简单的!准确的说就是Linux去解决,因为他不存在编码问题,不会像傻Windows,特别蠢!!开发人员最好还是用Linux系统吧! 经过我认真不负努力的搜索,诶找到一个靠谱的文章,哈哈!外国的‘知乎' 文章链接:https://stackoverflow.com/questions/33225947/can-a-website-detect-when-you-are-using-selenium-with-chromedriver 就是他! 。

selenium 反爬虫之跳过淘宝滑块验证功能的实现代码

就是这段翻译后的操作。 注意 划重点 !!采用Linux系统的vim进去后你看到的也是乱码!!哈哈,but和Windows的乱码是不一样的,他会让你找到“$cdc_asdjflasutopfhvcZLmcfl_”这个字符串的,神奇吧。这就是Linux的强大!! 不会Linux命令的童鞋可以自己搜索一下,很简单的。修改后记得要保存哦! 。

4.可能大家觉得到这里就可以了,NO NO NO 这样子你还是登录不掉的。需要最后一个锦囊妙计!! 具体就是 你需要关闭chorme开发者模式,关闭自动测试状态,还需要将大家都熟知的把window.navigator.webdriver设为"undefined"。可能说的不太明白,图片帮你理解 。

selenium 反爬虫之跳过淘宝滑块验证功能的实现代码

  1. # chrome_options 初始化选项
  2. chrome_options = webdriver.ChromeOptions()
  3.  
  4. # 设置浏览器初始 位置x,y & 宽高x,y
  5. chrome_options.add_argument(f'--window-position={217},{172}')
  6. chrome_options.add_argument(f'--window-size={1200},{1000}')
  7.  
  8. # 关闭自动测试状态显示 // 会导致浏览器报:请停用开发者模式
  9. # window.navigator.webdriver还是返回True,当返回undefined时应该才可行。
  10. chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])

加上这个代码会关闭“正受到自动测试软件的控制“的显示 。

selenium 反爬虫之跳过淘宝滑块验证功能的实现代码

  1. # 通过浏览器的dev_tool在get页面钱将.webdriver属性改为"undefined"
  2. driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  3. "source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})""",
  4. })

加上这个代码可以关闭开发者模式 。

selenium 反爬虫之跳过淘宝滑块验证功能的实现代码

  1. # 通过浏览器的dev_tool在get页面钱将.webdriver属性改为"undefined"
  2. driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  3. "source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})""",
  4. })

最后我们通过提前运行js的方法,把window.navigator.webdriver设为"undefined"! OK !!大功告成!!通过这么一步步下来,你会发现 我的天居然没有滑块!开森!! 。

总结 。

到此这篇关于selenium 反爬虫之跳过淘宝滑块验证(2020/8)的文章就介绍到这了,更多相关selenium 跳过淘宝滑块验证内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://blog.csdn.net/qq_42166308/article/details/107785544 。

最后此篇关于selenium 反爬虫之跳过淘宝滑块验证功能的实现代码的文章就讲到这里了,如果你想了解更多关于selenium 反爬虫之跳过淘宝滑块验证功能的实现代码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com