破解网站根据 window.navigator.webdriver属性来判断是否使用自动化工具登录
找到chrome驱动程序,右键使用notepad++或笔记本打开,使用ctrl+F快捷键查找$cdc
将asdjflasutopfhvcZLmcfl中的任何一个或多个字母变成任意其他字母,并保持字符串长度不变
我改成了$cdc_abdjflasutopfhvcZLmcfl_保存即可。
然后设置chrome以开发者模式启动
option =webdriver.ChromeOptions();#添加启动配置
option.add_experimental_option('excludeSwitches', ['enable-automation'])#屏蔽chrome自动化受控提示
option.add_argument("--disable-blink-features=AutomationControlled")#禁用启用Blink运行时的功能去掉webdriver痕迹
#打开浏览器
chrome_browser=webdriver.Chrome(chrome_options=option,executable_path='F:\python\chrome驱动\chromedriver.exe')
设置完后 即可成功登录12306
#跳转到12306首页
chrome_browser.get('https://www.12306.cn/index/index.html')
#休眠1秒
time.sleep(2)
#找到登录按钮
login=chrome_browser.find_element_by_link_text('登录')
#点击登录
login.click()
#输入用户名和密码
username='你的12306账号'
userpasswd='你的12306密码'
chrome_browser.find_element_by_id('J-userName').send_keys(username)
time.sleep(1)
chrome_browser.find_element_by_id('J-password').send_keys(userpasswd)
time.sleep(1)
#点击立即登录
now_login=chrome_browser.find_element_by_id('J-login')
now_login.click()
time.sleep(2)
#模拟人的拖动速度
time1 = [2, 4, 3, 5, 3.1, 3.7, 2.8, 2.9, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7,
3.8, 3.9, 4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5.0, 5.1, 5.2]
t1 = random.choice(time1)
def get_track(distance, t): # distance为传入的总距离,a为加速度
track = []
current = 0
mid = distance * t / (t + 1)
v = 0
while current < distance:
if current < mid:
a = 3
else:
a = -1
v0 = v
v = v0 + a * t
move = v0 * t + 1 / 2 * a * t * t
current += move
track.append(round(move))
return track
#生成随机拖动
mytrack=get_track(300,t1)
#验证模块
#定位验证弹出框
verify_action=chrome_browser.find_element_by_id('nc_1_n1z')
# 按住滑块
ActionChains(chrome_browser).click_and_hold(verify_action).perform()
time.sleep(0.15)
for x in mytrack:
# 移动滑块
ActionChains(chrome_browser).move_by_offset(x, 0).perform()