python+selenium行为链登录12306(滑动验证码滑块)
作者:侯小啾?? 发布时间:2023-01-16 16:08:01
标签:selenium,行为链,登录,12306
使用python网络爬虫登录12306,网站界面如下。因为网站的反爬是不断升级的,以下代码虽然当前可用,但早晚必将会不再能满足登录需求。但是知识的价值,是不容置疑的。
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
from selenium.webdriver import ChromeOptions
# 去除浏览器识别
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
option.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=option)
driver.get('https://kyfw.12306.cn/otn/resources/login.html')
# 解决特征识别
script = 'Object.defineProperty(navigator, "webdriver", {get: () => false,});'
driver.execute_script(script)
# 输入账号
driver.find_element_by_id('J-userName').send_keys('123@163.com')
# 输入密码
driver.find_element_by_id('J-password').send_keys('xxxxxxx')
# 点击登陆
driver.find_element_by_id('J-login').click()
# 等待2秒钟,不要点的太快,以免被识别或者以免网页加载跟不上。
time.sleep(2)
# 滑动
# 定位 滑块标签
span = driver.find_element_by_id('nc_1_n1z')
actions = ActionChains(driver) # 行为链实例化
time.sleep(2) # 等待2秒钟
# 经截图测量,滑块需要滑过的距离为300像素
actions.click_and_hold(span).move_by_offset(300, 0).perform() # 滑动
解决浏览器识别:
其中的以下这几行代码,可用去除浏览器对selenium
的识别,如图可以使浏览器页面不再显示图中“Chrome
正受到自动测试软件的控制”字样。
from selenium.webdriver import ChromeOptions
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
option.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=option)
解决特征识别的代码:
script = 'Object.defineProperty(navigator, "webdriver", {get: () => false,});'
driver.execute_script(script)
如果不采取去除特征识别,即以下两行代码。则页面的滑块验证码在滑动后,会显示如下图的出错,从而阻止登录进行。因为服务器识别到的selenium
的特征。使用该两行代码更改了特征,即可以顺利通过识别。
来源:https://skylarkprogramming.blog.csdn.net/article/details/122687096


猜你喜欢
- 使用tf.keras.MaxPooling1D出现错误错误如下ValueError: Negative dimension size cau
- 本教程使用python来生成随机漫步数据,再使用matplotlib将数据呈现出来开发环境操作系统: Windows10 IDE: Pych
- 前言利用Python实现获取动态图表,废话不多说~让我们愉快地开始吧~开发工具Python版本: 3.6.4相关模块:re模块;reques
- 使用 NetBox 可以方便的将 asp 应用编译成为独立运行的执行程序,完全摆脱 iis 的束缚,在几乎所有的 Windows 版本上面直
- 本来是要写个程序用的,没写完不写了,这一部分就贴出来吧验证域名和IPclass JianKong(): ''
- 如何用拦截表单的方法上传图片? 看下列代码:<script language="
- Firefox 的 Jetpack 可以让我们很轻松地创建 Firefox 插件,仅通过已掌握的前端技能(HTML/CSS/JS),估计让人
- 引言语音端点检测最早应用于电话传输和检测系统当中,用于通信信道的时间分配,提高传输线路的利用效率.端点检测属于语音处理系统的前端操作,在语音
- 本文实例讲述了纯JavaScript实现的分页插件。分享给大家供大家参考。具体如下://总条数(必填)var Num=Number(<
- 什么是JSON http://www.json.org/json-zh.htmlJSON(Javascript Object Notatio
- 以下的文章主要介绍的是MySQL 查询缓存的实际应用代码以及查看MySQL 查询缓存的大小 ,碎片整理,清除缓存以及监视MySQL 查询缓存
- Python是数据分析的强大利器利用Python做数据分析,第一步就是学习如何读取日常工作中产生各种excel报表并存入数据中,方便后续数据
- JavaScript是前端开发的主要语言,我们可以通过编写JavaScript程序来判断浏览器的类型及版本。JavaScript判断浏览器类
- 前言对于我这种小白来说,本地环境搭建常规的操作一向是直接去go官网下载go安装包,本机进行安装,然后配置相应的GOROOT和GOPATH,再
- 在ASP.net页面中,我们编写JavaScript脚本附加有注释时,这些注释也往往会随JavaScript脚本一起送到客户端。
- 本文实例讲述了MySQL学习笔记之数据定义表约束,分页方法。分享给大家供大家参考,具体如下:1. primary key 主键特点:主键是用
- 这是fenye.asp具体代码:以下是引用片段:<%Const maxPagesize=1000 '设置分
- Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站!学习django学得超级吃力
- 这里的Counter是指collections中的Counter,通过Counter可以实现字典的创建以及字典key出现频次的统计。然而,使
- 引言阿刁是一个自动化测试用例,从一出生他就被赋予终生使命,去测试一个叫登录的过程是否合理。他一直就被关在一个小黑屋里面,从来也没有出去过,小