当前位置:   article > 正文

python selenium 绕过12306反爬虫机制

12306反爬虫

破解网站根据 window.navigator.webdriver属性来判断是否使用自动化工具登录

找到chrome驱动程序,右键使用notepad++或笔记本打开,使用ctrl+F快捷键查找$cdc

将asdjflasutopfhvcZLmcfl中的任何一个或多个字母变成任意其他字母,并保持字符串长度不变

我改成了$cdc_abdjflasutopfhvcZLmcfl_保存即可。

然后设置chrome以开发者模式启动

  1. option =webdriver.ChromeOptions();#添加启动配置
  2. option.add_experimental_option('excludeSwitches', ['enable-automation'])#屏蔽chrome自动化受控提示
  3. option.add_argument("--disable-blink-features=AutomationControlled")#禁用启用Blink运行时的功能去掉webdriver痕迹
  4. #打开浏览器
  5. chrome_browser=webdriver.Chrome(chrome_options=option,executable_path='F:\python\chrome驱动\chromedriver.exe')

 设置完后 即可成功登录12306

  1. #跳转到12306首页
  2. chrome_browser.get('https://www.12306.cn/index/index.html')
  3. #休眠1
  4. time.sleep(2)
  5. #找到登录按钮
  6. login=chrome_browser.find_element_by_link_text('登录')
  7. #点击登录
  8. login.click()
  9. #输入用户名和密码
  10. username='你的12306账号'
  11. userpasswd='你的12306密码'
  12. chrome_browser.find_element_by_id('J-userName').send_keys(username)
  13. time.sleep(1)
  14. chrome_browser.find_element_by_id('J-password').send_keys(userpasswd)
  15. time.sleep(1)
  16. #点击立即登录
  17. now_login=chrome_browser.find_element_by_id('J-login')
  18. now_login.click()
  19. time.sleep(2)
  20. #模拟人的拖动速度
  21. time1 = [2, 4, 3, 5, 3.1, 3.7, 2.8, 2.9, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7,
  22. 3.8, 3.9, 4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5.0, 5.1, 5.2]
  23. t1 = random.choice(time1)
  24. def get_track(distance, t): # distance为传入的总距离,a为加速度
  25. track = []
  26. current = 0
  27. mid = distance * t / (t + 1)
  28. v = 0
  29. while current < distance:
  30. if current < mid:
  31. a = 3
  32. else:
  33. a = -1
  34. v0 = v
  35. v = v0 + a * t
  36. move = v0 * t + 1 / 2 * a * t * t
  37. current += move
  38. track.append(round(move))
  39. return track
  40. #生成随机拖动
  41. mytrack=get_track(300,t1)
  42. #验证模块
  43. #定位验证弹出框
  44. verify_action=chrome_browser.find_element_by_id('nc_1_n1z')
  45. # 按住滑块
  46. ActionChains(chrome_browser).click_and_hold(verify_action).perform()
  47. time.sleep(0.15)
  48. for x in mytrack:
  49. # 移动滑块
  50. ActionChains(chrome_browser).move_by_offset(x, 0).perform()

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/89855
推荐阅读
相关标签
  

闽ICP备14008679号