python 12306登录_Python 实现12306登录功能实例代码
下面一段代码给大家带来了python实现12306登录功能,具体代码如下所示:
#!/usr/bin/env python
import requests
import urllib.parse
import random
import time
req = requests.session()
import sys
import re
import urllib3
import getpass # 密文输入
urllib3.disable_warnings()
# 登陆-------------------------
apptklist = []
newStrList = []
def signin():
ran = random.uniform(1, 0)
imgUrl = ('https://kyfw.12306.cn/passport/captcha/captcha-image?'
'login_site=E&module=login&rand=sjrand&%s' % ran)
print(imgUrl)
imgresponse = req.get(url=imgUrl, verify=False)
codeimg = imgresponse.content
fn = open('code.png', 'wb')
fn.write(codeimg)
fn.close()
codeStr = input('请输入验证码的坐标:')
a = ''
b = ''
c = ''
d = ''
e = ''
f = ''
g = ''
h = ''
if '1' in codeStr:
a = '37,37,'
if '2' in codeStr:
b = '100,37,'
if '3' in codeStr:
c = '180,37,'
if '4' in codeStr:
d = '250,37,'
if '5' in codeStr:
e = '37,100,'
if '6' in codeStr:
f = '100,100,'
if '7' in codeStr:
g = '180,100,'
if '8' in codeStr:
h = '250,100,'
newCodeStr = a+b+c+d+e+f+g+h
newStr = newCodeStr[:-1]
newStrList.append(newStr)
url = 'https://kyfw.12306.cn/passport/captcha/captcha-check'
data = {
'answer':newStr,
'login_site':'E',
'rand':'sjrand'
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)'
' Chrome/63.0.3239.108 Safari/537.36',
}
response = req.post(url=url, data=data, headers=headers, verify=False)
print('检测图片-----------', url)
print(response.text)
result = response.json()
if result['result_code'] == '4':
print('验证码校验成功')
else:
print('验证码校验失败,请注意填写正确的坐标')
signin()
return
userName = input('Please input your userName:')
# password = input('Please input your password:')
password = getpass.getpass('Please input your password:')
loginData = {
'username':userName,
'password':password,
'appid':'otn'
}
headers = {
'Host':'kyfw.12306.cn',
'Referer':'https://kyfw.12306.cn/otn/login/init',
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2)'
' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 '
'Safari/537.36'
}
response = req.post('https://kyfw.12306.cn/passport/web/login', data=loginData, headers=headers, verify=False)
print('--------------登陆中--------------------')
print('https://kyfw.12306.cn/passport/web/login')
print('response', response.text.encode('utf-8').decode('utf-8'))
fd = open("locate.html", 'wb+')
fd.write(response.content)
yzData = {
'appid':'otn'
}
response = req.post('https://kyfw.12306.cn/passport/web/auth/uamtk', data=yzData, headers=headers, verify=False)
print('---------------------第一次验证---------------------')
print(response.text)
# print('typeof response',type(response))
loginMessage = response.json()['newapptk']
print('loginMessage=', loginMessage)
# 第二次验证开始++++++++++++++++++++++++++++++
yz2Data = {
'tk': loginMessage
}
response = req.post('https://kyfw.12306.cn/otn/uamauthclient', data=yz2Data, headers=headers,verify=False)
print('---------------------第二次验证---------------------')
print(response.text)
apptk = response.json()['apptk']
apptklist.append(apptk)
def buy():
print(newStrList)
req.headers['Referer'] = 'https://kyfw.12306.cn/otn/leftTicket/init'
result = req.post('https://kyfw.12306.cn/otn/login/checkUser')
print('----------------购票系统--------------')
print(result.text)
print('验证登录状态成功checkUser')
headers = {
'Referer':'https://kyfw.12306.cn/otn/leftTicket/init',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36'
' (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36',
}
data = {
# 'secretStr':reserve[1],
'train_date':'2018-01-17',
'back_train_date':'2018-01-17',
'tour_flag':'dc', # dc 单程
'purpose_codes':'ADULT', # adult 成人票
'query_from_station_name':'成都',
'query_to_station_name':'长沙',
'undefined':''
}
def ticket():
# 先登陆、然后查询车票信息
signin()
url = ('https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_date=2018-02-10&'
'leftTicketDTO.from_station=SZQ&leftTicketDTO.to_station=NFG&purpose_codes=ADULT')
try:
response = requests.get(url, verify=False)
result = response.json()
print(result)
return result['data']['result']
except Exception as e:
return None
if __name__ == "__main__":
# ticket()
# with open('./aaa.xlsx', encoding='utf-8') as f:
#
# print(f.read())
dic = {}
context = [('IDS_ABOUT_OFFICAL_PHONE', 'Službeni telefon'),
('IDS_ABOUT_OFFICAL_WEBSITE', 'Službeno web-mjesto'),
('IDS_ABOUT_OFFICIAL_PHONE_CALL_NOT_SUPPORT', 'Trenutni uređaj ne može pozivati.')]
for i in range(len(context)):
print(i)
dic.setdefault(context[i][0],context[i][1])
print(dic)
print(dic.keys())
总结
以上所述是小编给大家介绍的Python 实现12306登录实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
本文标题: Python 实现12306登录功能实例代码
本文地址: http://www.cppcns.com/jiaoben/python/220326.html
python 12306登录_Python 实现12306登录功能实例代码相关推荐
- python 屏幕录制_Python实现屏幕录制功能的代码
前段时间做视频时需要演示电脑端的操作,因此要用到屏幕录制,下载了个迅捷屏幕录制,但是没有vip录制的视频有水印且只能录制二分钟,于是鄙人想了下能不能通过万能的python来实现呢?经过一晚上的尝试发现 ...
- python绘制蟒蛇_Python实现七彩蟒蛇绘制实例代码
本文主要研究的是Python编程turtle的实例,绘制一个七彩蟒蛇..具体如下. 第2周的课后练习里,有一道题目,要求修改"蟒蛇绘制"程序,对Python 蟒蛇的每个部分采用不同 ...
- python 报文解析_python解析DNS数据包实例代码
例子,python解析DNS数据包. 代码示例: ###file QueryDNS.py## -*- coding: utf-8 -*- #Get DNS answer #详情见RFC 1035 im ...
- java wed登录面 代码_JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)...
下面通过通过图文并茂的方式给大家介绍JavaWeb实现用户登录注册功能实例代码,一起看看吧. 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBea ...
- python编程实例视屏-使用Python实现视频下载功能实例代码
最近一两年短视频业务风生水起,各个视频网站都有各自特色的短视频内容.如果有一个程序可以把各大视频网站的热门用户最新发布的视频下载下来,不仅方便了观看,还可以将没有版权的视频发布在个人社交网站上,增加自 ...
- python sftp_Python使用sftp实现上传和下载功能(实例代码)
在Python中可以使用paramiko模块中的sftp登陆远程主机,实现上传和下载功能. 1.功能实现 根据输入参数判断是文件还是目录,进行上传和下载 本地参数local需要与远程参数remote类 ...
- 基于python的土壤细菌在kobas库的功能预测代码
以下是一个基于Python的土壤细菌在KOBAS库的功能预测代码.在运行之前,需要先安装相关的Python库,如biopython.pandas.numpy.matplotlib等. # 导入必要的库 ...
- java ftp服务器_Java实现FTP服务器功能实例代码
FTP(File Transfer Protocol 文件传输协议)是Internet 上用来传送文件的协议.在Internet上通过FTP 服务器可以进行文件的上传(Upload)或下载(Downl ...
- java生成验证码实例_Java生成验证码功能实例代码
页面上输入验证码是比较常见的一个功能,实现起来也很简单.给大家写一个简单的生成验证码的示例程序,需要的朋友可以借鉴一下. 闲话少续,直接上代码.代码中的注释很详细. package com.SM_te ...
最新文章
- 用ldap方式访问AD域的的错误解释
- Delphi:ClientDataset+TDataSetProvider的数据保存问题
- canvas html 动态,canvas.html
- 数据分析和大数据哪个更吃香_处理数据,大数据甚至更大数据的17种策略
- 下载 | 李宏毅:1 天搞懂深度学习,我总结了 300 页 PPT
- 微信小程序wepy框架资源汇总
- 30.课时30.【Django模板】autoescape标签使用详解(Av61533158,P30)
- 2.图像作为函数 | 生成高斯噪音_8
- js中getBoundingClientRect的作用及兼容方案
- 中img拉伸_8个拉伸动作,帮你调动全身肌肉,提高柔韧性,缓解疲劳放松心情...
- 手机通讯录备份代码实现一
- multi-view face detection using deep convolutional neural networksz
- 解决OverflowError: int too large to convert to float的办法
- JSON RPC API
- 通用后台管理系统前端界面Ⅺ——信息列表页(弹窗复用增改、CRUD前端基础实现)
- 消息称聊天宝团队解散 罗永浩已经退出股东行列
- Keras的BN你真的冻结对了吗
- CREATE SCHEMA
- CNN网络模型大总结【持续更新中...】
- 范式BCNF,3NF的判断方法