python 12306登录 2019_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登录 2019_Python 实现12306登录功能实例代码相关推荐
- python 12306登录_Python 实现12306登录功能实例代码
下面一段代码给大家带来了python实现12306登录功能,具体代码如下所示: #!/usr/bin/env python import requests import urllib.parse 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 ...
- Linux质数合数的脚本,python输出100以内的质数与合数实例代码
python输出100以内的质数与合数实例代码 具体代码如下所述: __author__ = 'Yue Qingxuan' # -*- coding: utf-8 -*- #求质数 p=[2] for ...
- JS实现星星评分功能实例代码(两种方法)
转载自 JS实现星星评分功能实例代码(两种方法) 一.方法1 1.用到图片 2.结构和样式 <!DOCTYPE html> <html lang="en"&g ...
- HTML页面打印功能js代码,JavaScript_js实现页面打印功能实例代码(附去页眉页脚功能代码),复制代码 代码如下: html - phpStudy...
js实现页面打印功能实例代码(附去页眉页脚功能代码) 复制代码 代码如下: @media print{ .print {display:block;} .notPrint {display:none; ...
最新文章
- Debugging Tools for Windows__from WDK7
- 南开大学2014年高等代数部分试题解答
- 画图怎么调整速度_初学者画图不流畅,线条毛躁生硬,而且手总抖怎么破?
- Linux设备驱动之I/O端口与I/O内存
- bootstrap table排序php,bootstraptable排序可以么
- 手机号、姓名、邮箱等合法性验证方法
- SQLAlchemy 多条件查询
- HTTP 404 - 未找到文件 怎么样解决
- 美团架构师带你深入理解Nginx模块开发与架构解析
- android 技能 英文,讯飞输入法Android7.0.4050搭载音标输入神技能
- 区分惯性环节与延迟环节
- 三重积分平均值_质心计算
- python程序员真实收入曝光_行!看到抖音上Python程序员晒得工资条,我沉默了.........
- 对面向对象和面向过程的理解
- python中lstrip_Python中的lstrip()方法使用简介
- 当命运欺骗了你,落到谷底时,唯一的出口就是向上
- JS对象中添加新的属性及修改字段名
- SAS语言与算法介绍
- vue源码分析-响应式系统(二)
- 总结如何提升网站流量之方法
热门文章
- kvm linux_在Linux KVM上创建ooRexx构建环境
- 编写移动端自定义navBar
- Installshield中集成Microsoft Visual C++ 2010 Redistributable
- Linux mtp路径,CentOS6.5上MTP读取Android手机
- 12年经验资深产品经理领你从“产品小白”走向“产品大牛”
- 【LiteOS】LiteOS移植常见问题
- Flutter GridView详解
- 怎么关闭计算机第三辅助工具,电脑出现屏幕键盘和辅助工具管理器怎么处理?...
- tp6腾讯云上传cos
- 阿里云祝顺民:生而为云,连接增长