实现自动登陆的话需要正确的点击图片中的验证码,下面为大家介绍如何自动登录铁路12306,12306登录界面如下所示:

我们在实现过程城中可以借用超级鹰帮助我们实验验证码的点击,首先我们将验证码的图片已截图的形式保存下来,然后我们将截图发送给第三方平台,第三方平台会将我们需要的图片的坐标返回给我们,然后我们对其返回的数据进行处理,然后点击相应的坐标就可以实验登录,当然在此过程中我们需要尽量的模仿人的行为习惯,代码如下:

from selenium import webdriver
import timefrom PIL import Image# 使用显示等待直到页面中需要的元素加载完毕
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECpath = r'D:\chromedriver\chromedriver.exe'bro = webdriver.Chrome(executable_path=path)
bro.get("https://kyfw.12306.cn/otn/resources/login.html")WebDriverWait(driver=bro, timeout=10).until(EC.presence_of_all_elements_located((By.ID, 'login-hd-account'))
)
bro.find_element_by_class_name('login-hd-account').click()
time.sleep(4)
WebDriverWait(driver=bro, timeout=10).until((By.ID, 'J-loginImg'))
code_image_ele = bro.find_element_by_id("J-loginImg")
time.sleep(2)
# 获取验证码的图片左上角的坐标
location = code_image_ele.location
print("location", location)# 获取验证码图片的长度和宽度
size = code_image_ele.size
print("size", size)# 定义一个元组表示的是左上角和右下角的坐标
rangle = (int(location['x']), int(location['y']), int(location['x']+size['width']), int(location['y'] + size['height'])
)# 截取浏览器打开的这张页面对应的图像
bro.save_screenshot("aa.png")
i = Image.open("./aa.png")
# 即将被截图下来的验证码图片的名称
code_img_name = 'code.png'# 根据左上角与右下角的坐标进行指定区域的截取
frame = i.crop(rangle)
frame.save(code_img_name)from chaojiying import Chaojiying_Clientchaojiying = Chaojiying_Client('username', 'password', 'ID')
im = open('./code.png', 'rb').read()result =chaojiying.PostPic(im, 9004)['pic_str']
print("**********", result)all_list = []
if '|' in result:list_1 = result.split('|')count_1 = len(list_1)for i in range(count_1):xy_list = []x = int(list_1[i].split(',')[0])y = int(list_1[i].split(',')[1])xy_list.append(x)xy_list.append(y)all_list.append(xy_list)
else:x = int(result.split(',')[0])y = int(result.split(',')[1])xy_list = []xy_list.append(x)xy_list.append(y)all_list.append(xy_list)
print(all_list)from selenium.webdriver.common.action_chains import ActionChainsaction = ActionChains(bro)for l in all_list:x = l[0]y = l[1]# 切换参照系,返回的坐标是以图片作为参照系的,所以也要使用图片作为参照系ActionChains(bro).move_to_element_with_offset(code_image_ele, x, y).click().perform()bro.find_element_by_id('J-userName').send_keys("xxxxxxxxxxxx")
bro.find_element_by_id('J-password').send_keys('miludebeikeer')
bro.find_element_by_id('J-login').click()

第三方平台提供的代码(chaojiying.py)

#!/usr/bin/env python
# coding:utf-8import requests
from hashlib import md5class Chaojiying_Client(object):def __init__(self, username, password, soft_id):self.username = usernamepassword = password.encode('utf-8')self.password = md5(password).hexdigest()self.soft_id = soft_idself.base_params = {'user': self.username,'pass2': self.password,'softid': self.soft_id,}self.headers = {'Connection': 'Keep-Alive','User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',}def PostPic(self, im, codetype):"""im: 图片字节codetype: 题目类型 参考 http://www.chaojiying.com/price.html"""params = {'codetype': codetype,}params.update(self.base_params)files = {'userfile': ('ccc.jpg', im)}r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files, headers=self.headers)return r.json()def ReportError(self, im_id):"""im_id:报错题目的图片ID"""params = {'id': im_id,}params.update(self.base_params)r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)return r.json()if __name__ == '__main__':chaojiying = Chaojiying_Client('超级鹰用户名', '超级鹰用户名的密码', '96001')   #用户中心>>软件ID 生成一个替换 96001im = open('a.jpg', 'rb').read()                                                  #本地图片文件路径 来替换 a.jpg 有时WIN系统须要//print(chaojiying.PostPic(im, 1902))                                          #1902 验证码类型  官方网站>>价格体系 3.4+版 print 后要加()

实现自动登录12306相关推荐

  1. 案例:自动登录12306

    10.案例:自动登录12306 文章目录 10.案例:自动登录12306 一.流程分析 二.代码示例 一.流程分析 1 打开连接:https://kyfw.12306.cn/otn/resources ...

  2. Python零基础之自动登录12306

    Python零基础之自动登录12306 文章目录 Python零基础之自动登录12306 需要注意的问题 直接上代码 分析过程在代码注释中已经写的较为清楚 功能实现是代码运行后打开生成的code2图片 ...

  3. python12306自动抢票为什么进入个人中心,python自动登录12306并自动点击验证码完成登录的实现源代码...

    以下代码可自动登录12306 - 包括输入用户名密码以及自动识别验证码并点击验证码登陆.该源码需要稍作修改: 把  username.send_keys('xxxxxxx')  中的  xxxxxx ...

  4. python爬虫登录12306失败_Python网络爬虫(selenium模拟登录12306网站)

    一.通过selenium自动登录12306官网 1.1 超级鹰打码平台API,创建chaojiyin.py文件 #!/usr/bin/env python#coding:utf-8 importreq ...

  5. 【新版12306抢票】python自动识别图片并登录12306,实现全自动抢票源代码-分享

    以下代码可自动登录12306 - 包括输入用户名密码以及自动识别验证码并点击验证码登陆. 把代码稍作加工,即可变为自己的自动抢票代码: 把  userName.send_keys("xxxx ...

  6. 爬虫三(Bs4搜索、Selenium基本使用、无界面浏览器、Selenium自动登录百度案例、自动获取12306登录验证码案例、切换选项卡、浏览器前进后退、登录Cnblogs获取Cookie自动点赞)

    文章标题 一.Bs4搜索文档树 二.CSS选择器 三.selenium基本使用 四.无界面浏览器 五.selenium其他使用 1)自动登录百度案例 2)获取位置属性大小.文本 3)自动获取12306 ...

  7. 自动化测试 - 12306火车票网站自动登录工具

    还记得2011年春运,12306火车票预订网站经常崩溃无法登录吗. 今天我们就开发一个12306网站自动登录软件. 帮助您轻松订票 Web的原理就是,浏览器发送一个Request给Web服务器,Web ...

  8. 爬虫学习笔记(十八)—— 点触验证码:超级鹰、12306自动登录

    一.打码平台 点触验证码是一种常见的反爬手段. 解决方案有两种:一种是直接解决,这需要深度学习机器学习等图像处理技术,以大量的数据训练识别模型,最终达到模型足矣识别图片中的文字提示和应该点击的区域之间 ...

  9. 自动化测试 (一) 12306火车票网站自动登录工具

    还记得2011年春运,12306火车票预订网站经常崩溃无法登录吗. 今天我们就开发一个12306网站自动登录软件. 帮助您轻松订票 通过前两篇博客Fiddler教程和HTTP协议详解,我们了解了Web ...

最新文章

  1. 2022-2028年中国海洋电力行业市场深度分析及发展策略分析报告
  2. python自动轨迹绘制_Python——自动轨迹绘制
  3. KVM虚拟机的优化历程---按需优化
  4. The connection to adb is down, and a severe error has occured.问题解决方法小结
  5. 欢乐纪中某B组赛【2019.1.18】
  6. 重构,体现一个工程师的基本素养和底蕴
  7. POI读取word文件,(支持HSSF和XSSF两种方式)
  8. 壁式框架内力计算_钢结构墙梁内力计算
  9. gulp压缩图片插件大比拼
  10. Infor Framework Task Man 服务无法启动
  11. hive-对用户浏览网站的点击量按年月进行统计
  12. 解决win10蓝牙搜索到小爱音箱无法连接问题
  13. Latex公式与Word公式相互转换(使用MathType)
  14. Dell计算机装Win8,超简单戴尔重装win7/win8系统完整教程
  15. OpenNI的安装与开发环境配置
  16. EffectiveC++详解:条款05-了解C++默默编写并调用哪些函数
  17. SpringCloud整合Seata(Docker)版本异常处理
  18. LIKE通配符的使用
  19. 一直以来,我都理解错了
  20. windows10 获取之前连接密码的方式

热门文章

  1. 和氟西汀类似的备注_备注氟西汀是什么意思和梗 让我做你的氟西汀出处意义...
  2. oracle power 函数
  3. PS创建简单的图形,染色,裁剪
  4. 组网实验 交换机基本配置
  5. python改图片颜色_如何使用python改变二值图像的颜色?
  6. Python3 获取内外网IP
  7. 大学计算机基础2014,大学计算机基础
  8. 关于生日的那个经典逻辑题解释
  9. Fabridge-沟通javascript与flex的桥梁
  10. 教师综合素质7--文学常识