python+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的特征。使用该两行代码更改了特征,即可以顺利通过识别。

到此这篇关于python+selenium行为链登录12306(滑动验证码滑块)的文章就介绍到这了,更多相关python+selenium行为链登录12306内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Selenium之模拟登录铁路12306的示例代码

    最近接触了一些selenium模块的相关知识,觉得还挺有意思的,于是决定亲自尝试写一些爬虫程序来强化selenium模块(一定要多尝试.多动手.多总结).本文主要使用python爬虫来模拟登录铁路12306官网.这儿得吐槽一句,铁路12306网站的反爬机制做的还是比较好. 话不多说,下面跟小墨一起来学习如何通过爬虫来实现铁路12306的登录. 一. 验证码破解 当我们输入账号和密码后,在点击登录按钮之前,还需要对验证码进行操作.对验证码的识别,已经有相关的处理平台,我们只需要借助第三方平台即可.

  • python+selenium实现12306模拟登录的步骤

    简介: 这里是利用了selenium+图片识别验证,来实现12306的模拟登录,中间也参考了好几个项目,实现了这个小demo,中间也遇到了很多的坑,主要难点在于图片识别和滑动验证这两个方面,图片识别是利用超级鹰的服务进行验证识别的,其次一个难点就是在账户密码和图片识别都过了以后的滑动验证,因为12306网站做了反爬,利用selenium滑动时,会报错,提示你一直刷新,这里也是更改了滑动框. 技术栈: python.selenium.图片验证.滑动验证 思路: 提前卧槽,12306网站的并发真的牛

  • selenium+超级鹰实现模拟登录12306

    最近迷上了用selenium去登陆各大网站,别说selenium真挺好用,可以轻松搞定ajax动态加载的网页,不用很费劲的去抓包查找.咳咳-跑题了,回归正题. 这次用selenium去登录12306网站,听说比较困难.我就去试了试,发现它的验证码实在是那啥-就是这样的.听头疼的. 我来说说主要的代码编写吧. 过程: 用我们的开发者工具定位到输入账号和密码的窗口,找到并send_keys driver.find_element_by_id('username').send_keys('用户名')

  • python+selenium行为链登录12306(滑动验证码滑块)

    使用python网络爬虫登录12306,网站界面如下.因为网站的反爬是不断升级的,以下代码虽然当前可用,但早晚必将会不再能满足登录需求.但是知识的价值,是不容置疑的. from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains import time from selenium.webdriver import ChromeOptions # 去除浏览器识别 opt

  • selenium+java破解极验滑动验证码的示例代码

    摘要 分析验证码素材图片混淆原理,并采用selenium模拟人拖动滑块过程,进而破解验证码. 人工验证的过程 1.打开威锋网注册页面 2.移动鼠标至小滑块,一张完整的图片会出现(如下图1) 3.点击鼠标左键,图片中间会出现一个缺块(如下图2) 4.移动小滑块正上方图案至缺块处 5.验证通过 selenium模拟验证的过程 加载威锋网注册页面 下载图片1和缺块图片2 根据两张图片的差异计算平移的距离x 模拟鼠标点击事件,点击小滑块向右移动x 验证通过 详细分析 1.打开chrome浏览器控制台,会

  • Python 200行代码实现一个滑动验证码过程详解

    前言 做网络爬虫的同学肯定见过各种各样的验证码,比较高级的有滑动.点选等样式,看起来好像挺复杂的,但实际上它们的核心原理还是还是很清晰的,本文章大致说明下这些验证码的原理以及带大家实现一个滑动验证码. 实际上这类验证码的校验是分为两个步骤的: 1.第一步就是前端的校验.一般来说,登录注册页面在点击提交的时候都会伴随着一个表单提交,在表单提交的时候会有 JavaScript 事件的触发.如果加入了验证码,那么在表单提交的时候会多加一个额外的验证,判断这个验证码是否已经成功完成了操作.如果没有的话,

  • python破解bilibili滑动验证码登录功能

    地址:https://passport.bilibili.com/login 左图事完整验证码图,右图是有缺口的验证码图                                    步骤: 1.准备bilibili账号 2.工具:pycharm selenium chromedriver PIL 3.破解思路: 找到完整验证码和有缺口的验证码图片,然后计算缺口坐标,再利用selenium移动按钮到指定位置,齐活 步骤代码如下: 先导入需要的包和库 from selenium impor

  • python自动登录12306并自动点击验证码完成登录的实现源代码

    以下代码可自动登录12306 - 包括输入用户名密码以及自动识别验证码并点击验证码登陆.该源码需要稍作修改: 把  username.send_keys('xxxxxxx')  中的  xxxxxx 改为 你自己的12306账号. 把  password.send_keys('yyyyyy')     中的 yyyyy 改为自己的 12306 密码. 即可运行. 该源码把自动抢票的核心功能:识别验证码并点击验证码登陆实现了. 把代码稍作加工,即可变为自己的自动抢票代码. 运行环境 - 需要安装p

  • Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录

    本文介绍了Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录,分享给大家,具体如下: Python 2.7 IDE Pycharm 5.0.3 Firefox浏览器:47.0.1 Selenium PIL Pytesser Tesseract 扯淡 ​ 我相信每个脚本都有自己的故事,我这个脚本来源于自己GRD教务系统,每次进行登录时,即使我输入全部正确,第一次登录一定是登不上去的!我不知道设计人员什么想法?难道是为了反爬机制?你以为一次登不上,我tm就不爬了?我

  • Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能

    测试结果: 整个买票流程可以再快一点,不过为了稳定起见,有些地方等待了一些时间 完整程序,拿去可用 整个程序分了三个模块:购票模块(主体).验证码识别模块.余票查询模块 购票模块: from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.commo

  • Python +Selenium解决图片验证码登录或注册问题(推荐)

    1. 解决思路 首先要获得这张验证码的图片,但是该图片一般都是用的js写的,不能够通过url进行下载. 解决方案:截图然后根据该图片的定位和长高,使用工具进行裁剪 裁剪完毕之后,使用工具解析该图片. 2. 代码实现 2.1 裁剪出验证码图片 裁剪图片需要使用 Pillow 库,进入pip包路径后输入安装命令pip install Pillow: 之前安装的时候忘记了截图,只能够截一张安装后的图片了 ╰(:з╰∠)_ 安装完成后,代码实现方式如下: #coding=utf-8 from selen

随机推荐