m0_46669335 2021-08-19 20:28 采纳率: 100%
浏览 83
已结题

senlenium对12306登陆显示验证码校验失败

#遇到的问题
在进行python进行爬虫学习的时候。使用超级鹰与selenium进行12306的登陆。代码运行到最后却显示验证码校验失败。无论是通过程序还是手动输入拖动都是这样。只有不通过selenium开启的浏览器访问才可以正常登陆。

附上代码

from selenium.webdriver import Chrome
from chaojiying import Chaojiying_Client
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains
import time


chaojiying = Chaojiying_Client('********', '*********', '921331') #超级鹰的账号与密码隐藏了
ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
option = Options()
option.add_experimental_option('useAutomationExtension', False)
option.add_experimental_option('excludeSwitches', ['enable-automation'])
option.add_argument('User-agent='+ua)
option.add_argument('--disable-blink-features=AutomationControlled')
web = Chrome(options=option)

script = 'Object.defineProperty(navigator,"webdriver",{get:()=>undefined,configurable: true});'
web.execute_script(script)

web.get('https://kyfw.12306.cn/otn/resources/login.html')
time.sleep(1)
web.find_element_by_xpath('/html/body/div[2]/div[2]/ul/li[2]/a').click()
# 用户中心>>软件ID 生成一个替换 96001
time.sleep(1)


web.find_element_by_xpath('//*[@id="J-userName"]').send_keys("************") #账号
web.find_element_by_xpath('//*[@id="J-password"]').send_keys("*************") #密码
verify_element = web.find_element_by_xpath('//*[@id="J-loginImg"]')
img = verify_element.screenshot_as_png

dic = chaojiying.PostPic(img, 9004)
loc_list = dic['pic_str']  # x1,y1|x2,y2
result = loc_list.split('|')
for rs in result:
    p_temp = rs.split(",")
    x = int(p_temp[0])
    y = int(p_temp[1])
    # 动作链,执行一系列动作
    ActionChains(web).move_to_element_with_offset(verify_element, x, y).click().perform()
time.sleep(2)
web.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div[2]/div[5]/a').click()
time.sleep(5)
btn = web.find_element_by_xpath('/html/body/div[5]/div[2]/div/div[3]/div/div[1]/span')
ActionChains(web).drag_and_drop_by_offset(btn, 300, 0).perform()


img

img

  • 写回答

1条回答 默认 最新

  • Mint.Coder 2021-08-19 21:57
    关注

    被识别为机器了,或者你根本检验错误

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月28日
  • 已采纳回答 8月20日
  • 创建了问题 8月19日

悬赏问题

  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果