最新模拟登录12306(破解12306验证码)

重点:对12306验证码的破解 -------仅供学习交流,请勿…

1.找到验证码的图片信息

2.点开headers查看(不难发现是经过base64加密的图片),但是没有请求的url

3.再查看分析发现(上面的一个js文件里也存储这图片信息)

4.点开headers查看 Requests Url

5.对地址发起请求下载验证码图片(别忘记 要把base64解密 哈哈 好坑)

Xq_url = 'https://kyfw.12306.cn/passport/captcha/captcha-image64'
#构造请求表单
Xq_parmas = {"login_site": "E","module": "login","rand": "sjrand","1555036551227":"","callback": "jQuery19108754385247664451_1555036549517","_": "1555036549518",
}
#对图片页发送请求
response = sesson.get(url=Xq_url,params=Xq_parmas,headers=headers).text
#获取图片数据
image_bs64 = re.findall('"image":"(.*?)",',response)[0]
#解码数据
image = base64.b64decode(image_bs64)
#保存图片
with open('Yz_image.jpg','wb') as f:f.write(image)

6.对验证码分析(经过几次实验 可以很容易确定传入的坐标是以像素位置传入的)

7.经过点击每个图片确定位置如下(弄得想吐呀),终于可以构造像素表单了

#椅子垫形式对应图片位置和像素
coord_data = {"1":"40,40","2":"120,40","3":"180,40","4":"250,40","5":"40,100","6":"120,100","7":"180,100","8":"250,100",}
answerlist = []
input_answer = input('位置:')
#对输入的数字进行切割
answer_list = input_answer.split(' ')
#循环输入的值取出字典相应的坐标
for i in answer_list:answerlist.append(coord_data.get(i))
print('answer:' + ','.join(answerlist))
answer = ','.join(answerlist)

8.验证码破解了,就可以模拟登录了 哈哈哈
分析可以发现在login里有我们要的东西 Fromdata 和 RequestURL
构造Formdata 发起post请求

Sy_url = 'https://kyfw.12306.cn/passport/web/login'
formdata = {"username": 你的12306账号,"password": 你的12306密码,"appid": "otn","answer": answer,
}#对比分析加入下面三个字段的cookies
sesson.cookies.update({'RAIL_EXPIRATION':'1555310364529','RAIL_DEVICEID':'K71MCVMaU_fg6Lr5kLs9K5-HrmV-F-LdSuahWpFSW60X8GmWMZiS06V7InVpguAyYJOmW3cNWKx8Giau-aCZEqehQzwLYRMwjHxr1v1EkKjGTn_iX87fpiWNuGK_jPgg-1PgNgIpFMHeEEfDmXfwdmXX2nGNCcuC','route':'495c805987d0f5c8c84b14f60212447d',
})response = sesson.post(Sy_url,data=formdata)
#返回编码后的数据
response.encoding = 'utf-8'
print(re.findall('"result_message":"(.*?)"',response.text))

9.附上源码

import requests
import re
import base64
#创建sesson对象 保持会话一至
sesson = requests.session()
#请求的url
Sy_url = 'https://kyfw.12306.cn/passport/web/login'
Xq_url = 'https://kyfw.12306.cn/passport/captcha/captcha-image64'
Yz_url = 'https://kyfw.12306.cn/passport/captcha/captcha-check'
#构造请求头
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
}
#构造请求表单
Xq_parmas = {"login_site": "E","module": "login","rand": "sjrand","1555036551227":"","callback": "jQuery19108754385247664451_1555036549517","_": "1555036549518",
}
#对图片页发送请求
response = sesson.get(url=Xq_url,params=Xq_parmas,headers=headers).text
#获取图片数据
image_bs64 = re.findall('"image":"(.*?)",',response)[0]
#解码数据
image = base64.b64decode(image_bs64)
#保存图片
with open('Yz_image.jpg','wb') as f:f.write(image)
#构建像素表单
coord_data = {"1":"40,40","2":"120,40","3":"180,40","4":"250,40","5":"40,100","6":"120,100","7":"180,100","8":"250,100",}
answerlist = []
input_answer = input('位置:')
#对输入的数字进行切割
answer_list = input_answer.split(' ')
#循环输入的值取出字典相应的坐标
for i in answer_list:answerlist.append(coord_data.get(i))
print('answer:' + ','.join(answerlist))
answer = ','.join(answerlist)
#构造data表单
formdata = {"username": 你的12306账号,"password": 你的12306密码,"appid": "otn","answer": answer,
}Yz_parmas = {"callback": "jQuery19108754385247664451_1555036549517","answer": answer,"rand": "sjrand","login_site": "E","_": "1555036549519",
}#发送图片验证请求
response_new = sesson.get(url=Yz_url,params=Yz_parmas,headers=headers).text
#获得图片验证信息
print(re.findall('"result_message":"(.*?)"',response_new))
#增加cookies
sesson.cookies.update({'RAIL_EXPIRATION':'1555310364529','RAIL_DEVICEID':'K71MCVMaU_fg6Lr5kLs9K5-HrmV-F-LdSuahWpFSW60X8GmWMZiS06V7InVpguAyYJOmW3cNWKx8Giau-aCZEqehQzwLYRMwjHxr1v1EkKjGTn_iX87fpiWNuGK_jPgg-1PgNgIpFMHeEEfDmXfwdmXX2nGNCcuC','route':'495c805987d0f5c8c84b14f60212447d',
})
response = sesson.post(Sy_url,data=formdata)
response.encoding = 'utf-8'
print(re.findall('"result_message":"(.*?)"',response.text))

10.最后的效果

最新模拟登录12306(破解12306验证码)相关推荐

  1. Python + selenium自动化工具 + 滑块验证码+点选验证码,实现模拟登录“中国铁路网12306”

    文章目录 一.模拟登录"中国铁路网12306 1.引入库 2.初始化 3.将点选验证码图片,通过人工打码,返回目标像素位置(json格式). 4.点选验证码位置得到后,需要鼠标左击进行模拟人 ...

  2. 2019年最新 Python 模拟登录知乎 支持验证码

    2019年最新 Python 模拟登录知乎 支持验证码和保存 Cookies 知乎的登录页面已经改版多次,加强了身份验证,网络上大部分模拟登录均已失效,所以我重写了一份完整的,并实现了提交验证码 (包 ...

  3. -Java 模拟登录时需要输入验证码功能

    模拟登录时需要输入验证码功能 本文通过java,随机数实现登录时需要输入的验证码功能: 验证码有4个字符组成 验证码只能由数字和大写字母组成(机制可以随意添加更改验证码的组成元素) 验证码要求字符不能 ...

  4. 微博html5版登录,新浪微博模拟登录 支持手动处理验证码

    [Python] 纯文本查看 复制代码""" 参考https://github.com/CharlesPikachu/DecryptLogin/blob/master/D ...

  5. python自动投递简历_python模拟登录前程无忧,发送简历

    主要想模拟登录,抓取相关公司,发送简历. 已经实现验证码手动输入,抓取相关公司,发送简历这个功能现在在想如何实现. import requests from bs4 import BeautifulS ...

  6. selenium与python自动化测试模拟登录百度

    将一些必须必要条件准备好 1,安装chorme浏览器 1,安装依赖 sudo apt-get install libxss1 libappindicator1 libindicator7 2,下载go ...

  7. 12-基于selenium实现12306模拟登录,及京东登录滑动缺口验证模拟登录

    流程分析: 使用selenium打开登录页面 对当前selenium打开的这张页面进行截图 对当前图片的局部区域(验证码图片区域)进行截图 这样验证码图片和模拟登录进行所显示的图片一一对应(如果我们对 ...

  8. Python+Selenium实现12306模拟登录

    最近在学python爬虫,学习到了selenium的使用,看网上有很多使用selenium模拟登录12306网站的文章,于是自己也尝试了一下.期间遇到了一些问题,也参考了很多大佬的文章最终得到了解决, ...

  9. 如何利用Python破解12306验证码和浏览车次为例!你学会了吗?

    本节重点讲的是python爬虫中的session和cookie在爬虫中的应用,所以12306验证码的破解可能相比手工操作更麻烦,但未来会讲解更容易的验证码破解和12306登陆~ cookie和sess ...

  10. Selenium之模拟登录铁路12306

    最近接触了一些selenium模块的相关知识,觉得还挺有意思的,于是决定亲自尝试写一些爬虫程序来强化selenium模块(一定要多尝试.多动手.多总结).本文主要使用python爬虫来模拟登录铁路12 ...

最新文章

  1. linux下不同程序如何协同,Linux程序员怎么和Exchange协同工作
  2. Android开发之TextView高级应用
  3. Bootstrap—基础样式定义
  4. 为什么阿里巴巴RPC接口不允许使用枚举类型?
  5. 【rzxt】windows7怎么设置桌面背景 如何快速道下一个背景
  6. 网易严选Java开发三面面经:java读文件内容
  7. cublas matlab,Check failed: status == CUBLAS_STATUS_SUCCESS (11 vs. 0) CUBLAS_STATUS_MAPPING_ERROR
  8. Eclipse 取消import自动补全具体的类名
  9. 双向循环链表实现—通讯录(学生管理系统,自行车管理系统,影院管理系统)—C语言课设(万能模板)—数据结构—用文件存储数据
  10. 每次打开Word,Excel,弹出Office安装配置进度向导解决办法
  11. linux arm 物理内存,linux – 如何在Arm Architecture硬件上进行内存测试? (像Memtest86这样)...
  12. 【bat】一个脚本文件,关闭IE,重置IE,配置IE,设置IE的ActionX等选项.并自动管理员身份运行
  13. 【机器学习】详解 ArcFace
  14. springboot文件上传 Required request part 'file' is not present
  15. ModSecurity web application firewall (WAF) Research - .Little Hann
  16. 计算机考研没有获奖没有科研难吗,大学期间没有什么获奖经历和科研成果, 对考研的影响大吗?...
  17. hooks引用useRef,报错object is possibly undefined
  18. 笔记6 | 从源码理解分析mScrollX和mScrollY,scrollTo()和scrollBy(),smoothScrollTo和smoothScrollBy
  19. BP神经网络的一些例子
  20. 先学C语言好还是先学JAVA好

热门文章

  1. Markdown文件中图片自动转云图片和自动生成标题序号
  2. 辽宁等保测评机构项目测评收费价格标准参考
  3. 中奖名单模板_获奖名单公布模板速来选择
  4. autojs微博_auto.js的使用以及薅羊毛插件示例
  5. 在x64上构建智能家居(home assistant) (一) Supervised版本安装
  6. Java 输出三角形
  7. 五金机械行业外贸管理软件解决方案
  8. 2007年沪市上涨前20与后20
  9. 欧美顶尖大学是如何使用大数据的?
  10. 十分钟django后台 simpleui -含自定义后台首页