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日

悬赏问题

  • ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
  • ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
  • ¥66 如何制作支付宝扫码跳转到发红包界面
  • ¥15 pnpm 下载element-plus
  • ¥15 解决编写PyDracula时遇到的问题
  • ¥15 有没有人能解决下这个问题吗,本人不会编程
  • ¥15 plotBAPC画图出错
  • ¥30 关于#opencv#的问题:使用大疆无人机拍摄水稻田间图像,拼接成tif图片,用什么方法可以识别并框选出水稻作物行
  • ¥15 Python卡尔曼滤波融合
  • ¥20 iOS绕地区网络检测