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()



你可能感兴趣的:(python,selenium,html,爬虫)