Python使用selenium模拟滑块验证登录12306网站 实测可用

Python使用selenium模拟登录12306网站(根据12306的更新编写的2022年4月最新方法)实测可用

from selenium import webdriver
from time import sleep
# 导入规避检测模块
from selenium.webdriver import ChromeOptions
# 导入动作链模块
from selenium.webdriver import ActionChains

# 实现规避检测
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])

bro = webdriver.Chrome('chromedriver.exe',options=option)

url = 'https://kyfw.12306.cn/otn/resources/login.html'

# 去除特征识别 防止服务器识别到的selenium的特征从而阻止后续的滑动验证
bro.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  "source": """
    Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    })
  """
})
# 打开浏览器
bro.get(url)
# 定位用户账号信息标签位置
userName_tag = bro.find_element('id','J-userName')
password_tog = bro.find_element('id','J-password')

# 写入用户账号信息
userName_tag.send_keys('xxxxxx')  # 你的账号
sleep(1)  # sleep():表示间隔秒数
password_tog.send_keys('xxxxxx')  # 你的密码
sleep(1)

# 定位登录标签
btn = bro.find_element('id','J-login')
# 点击登录
btn.click()
sleep(2)

# 定位滑块标签
# span = bro.find_element('xpath','//*[@id="nc_1_n1z"]')
span = bro.find_element('id','nc_1_n1z')
print(span)

# 创建动作链的实例化对象
action = ActionChains(bro)
# 点击长按指定的标签
action.click_and_hold(span)
# 拖动指定标签向右平移350px
action.move_by_offset(350,0).perform()
sleep(0.3)
# 释放动作链
action.release().perform()
sleep(5)

# 关闭浏览器
bro.quit()



  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值