selenium实现12306火车购票网站滑块自动验证登录
解决滑块验证登录问题和网站禁止selenium操作无法通过验证问题,问题过程如下,亲测有效:
当输入账号密码,点击登录后出现如下滑动解锁框: 此时,完成滑块自动滑动至右边解锁,写个拖动滑块的函数 move_by_offset(),偏移量的确定方法,浏览器开发者模式(F12),找到滑块的元素ID,拖动至最右边,即可看到合适的偏移量,如下图: 确定偏移量,直接上代码 运行后出现如下现象,滑动解锁出错: 解决上面问题,只需执行一句JS代码: 至此,可实现12306火车票网站,滑块自动登录。 |
废话不多说,直接上完整代码,如下:
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChainsclass trainTicketLogin(object):def __init__(self):self.username = 'XXXXXXXX'self.passwd = 'XXXXXXXX'self.url = 'https://kyfw.12306.cn/otn/resources/login.html'self.browser = webdriver.Firefox()def login(self,url):self.browser.get(self.url)# 选择1.账号密码登录login_method = self.browser.find_element(By.XPATH,'//div[@class="login-box"]/ul/li[1]/a').click()user = self.browser.find_element(By.ID,'J-userName').send_keys(self.username)passwd = self.browser.find_element(By.ID,'J-password').send_keys(self.passwd)# 登录submit = self.browser.find_element(By.CLASS_NAME,'login-btn').click()# print(browser.get_cookies())time.sleep(3)button = self.browser.find_element(By.XPATH,'//*[@id="nc_1_n1z"]')self.Verification(button)def Verification(self,button):action = ActionChains(self.browser)# 防止网站禁止seleniumscript = 'Object.defineProperty(navigator,"webdriver",{get:()=>undefined,});'self.browser.execute_script(script)#鼠标左键按下不放action.click_and_hold(button).perform()#需要滑动的偏移量action.move_by_offset(300,0)#释放鼠标action.release().perform() time.sleep(0.1)def run(self):self.login(self.url)
if __name__ == '__main__':Spider = trainTicketLogin()Spider.run()
selenium实现12306火车购票网站滑块自动验证登录相关推荐
- 从12306火车购票网站谈海量事务高速处理系统
12306架构性能高并发 转自:http://huiqinbo.iteye.com/blog/1407784 JE上好多讨论这个主题的帖子,但是水(v)的人远远多于技术讨论的.最近一直在跟同事和网友 ...
- 火车订票管理系统/火车购票网站系统/火车订票网站/火车票售卖系统
摘要:随着科技的飞速发展,计算机已经广泛的应用于各行各业当中,而且日趋普及.在各个领域内,计算机的应用已经十分广泛,各种智能设备都与计算机紧密结合在一起,主要应用于两个方面:一是以设备为主.另一种是软 ...
- 铁道部12306火车票购票网站浅析
作为铁道部12306网站购买火车票的老用户,经历了今年春运.平日.以及现在的国庆假期购票,也看到很多人的建议.意见.疑问.谩骂,我试着站在电子商务从业者的角度来简单回答几个常见问题,并提出一些建议.如 ...
- 对铁道部12306火车票购票网站的浅析
Address:http://smb.zol.com.cn/322/3224648.html 作为铁道部12306网站购买火车票的老用户,经历了今年春运.平日.以及现在的国庆假期购票,也看到很多人的建 ...
- vue3 滑块拼图验证登录(vue3-puzzle-vcode)
这里写自定义目录标题 首先,我们项目中很多情况下会用到滑动图片验证登录 vue有一个插件可以满足我们的需求 第一步先安装 npm install vue3-puzzle-vcode --save 第二 ...
- 12306火车购票 助手.js
// ==UserScript== // @name 12306.CN 订票助手 For Firefox&Chrome // @namespace htt ...
- 运用C#在采集时进行自动验证登录[转]
首先打开网站,查看源文件,找到他的登录表单部分. 比如: <form name="login" action="loginMain.jsp" method ...
- 28. 实战:基于selenium实现12306自动购票
目录 前言 目的 思路 代码实现 1. 进入登录界面,输入账号密码 2. 点击登录按钮,完成滑块验证 3. 在个人中心点击购票,跳转 4. 输入出发地.目的地,从控制台输入得到 5. 文本框输入出发日 ...
- python实现网站的自动登录(selenium实现,带验证码识别)
python实现网站自动登录(selenium实现,带验证码识别) 一.前言 这是鄙人写的第一篇博客,旨在总结一下近期所学,本文通过selenium工具实现工作所用网站的自动登录,下图为网站登录界面. ...
最新文章
- 2017-11-3—grow up
- 【Android 启动过程】Activity 启动源码分析 ( ActivityThread -> Activity、主线程阶段 一 )
- 10个调试Java的技巧
- 每个人都知道MVC…
- 《火球——UML大战需求分析》(第1章 大话UML)——1.5 小结和练习
- iOS开发中@property的属性weak nonatomic strong readonly等介绍
- JDK8后的日期时间API
- 论文浅尝 - SWJ | 基于知识图谱和注意力图卷积神经网络的可解释零样本学习
- php中左右去电空格,PHP中ltrim与rtrim去除左右空格及特殊字符实例
- 安卓模拟器调试GPS
- html中改变一张图片的颜色,css怎么改变图片颜色
- 亚马逊要验证收款查关联?
- Windows10清理C盘的恶意软件
- 2k2实用球员_盘点推荐萌新NBA2KOL2里性价比极高又好用的球员中锋篇
- 解决Git push提交时Permission denied(publickey).Could not read from remote...的问题
- JAVA简单计算器(简单实现两数加减乘除)
- org.apache.commons.codec.binary.Base64包需要下载的jar包依赖
- Sigmoid 与 Softmax 的区别
- 程序员在工作中这样做,会省去一大堆烦恼
- Linux安装与常见基本操作命令