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 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程