下面一段代码给大家带来了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登录功能实例代码相关推荐

  1. python 屏幕录制_Python实现屏幕录制功能的代码

    前段时间做视频时需要演示电脑端的操作,因此要用到屏幕录制,下载了个迅捷屏幕录制,但是没有vip录制的视频有水印且只能录制二分钟,于是鄙人想了下能不能通过万能的python来实现呢?经过一晚上的尝试发现 ...

  2. python绘制蟒蛇_Python实现七彩蟒蛇绘制实例代码

    本文主要研究的是Python编程turtle的实例,绘制一个七彩蟒蛇..具体如下. 第2周的课后练习里,有一道题目,要求修改"蟒蛇绘制"程序,对Python 蟒蛇的每个部分采用不同 ...

  3. python 报文解析_python解析DNS数据包实例代码

    例子,python解析DNS数据包. 代码示例: ###file QueryDNS.py## -*- coding: utf-8 -*- #Get DNS answer #详情见RFC 1035 im ...

  4. java wed登录面 代码_JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)...

    下面通过通过图文并茂的方式给大家介绍JavaWeb实现用户登录注册功能实例代码,一起看看吧. 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBea ...

  5. python编程实例视屏-使用Python实现视频下载功能实例代码

    最近一两年短视频业务风生水起,各个视频网站都有各自特色的短视频内容.如果有一个程序可以把各大视频网站的热门用户最新发布的视频下载下来,不仅方便了观看,还可以将没有版权的视频发布在个人社交网站上,增加自 ...

  6. python sftp_Python使用sftp实现上传和下载功能(实例代码)

    在Python中可以使用paramiko模块中的sftp登陆远程主机,实现上传和下载功能. 1.功能实现 根据输入参数判断是文件还是目录,进行上传和下载 本地参数local需要与远程参数remote类 ...

  7. 基于python的土壤细菌在kobas库的功能预测代码

    以下是一个基于Python的土壤细菌在KOBAS库的功能预测代码.在运行之前,需要先安装相关的Python库,如biopython.pandas.numpy.matplotlib等. # 导入必要的库 ...

  8. java ftp服务器_Java实现FTP服务器功能实例代码

    FTP(File Transfer Protocol 文件传输协议)是Internet 上用来传送文件的协议.在Internet上通过FTP 服务器可以进行文件的上传(Upload)或下载(Downl ...

  9. java生成验证码实例_Java生成验证码功能实例代码

    页面上输入验证码是比较常见的一个功能,实现起来也很简单.给大家写一个简单的生成验证码的示例程序,需要的朋友可以借鉴一下. 闲话少续,直接上代码.代码中的注释很详细. package com.SM_te ...

最新文章

  1. 用ldap方式访问AD域的的错误解释
  2. Delphi:ClientDataset+TDataSetProvider的数据保存问题
  3. canvas html 动态,canvas.html
  4. 数据分析和大数据哪个更吃香_处理数据,大数据甚至更大数据的17种策略
  5. 下载 | 李宏毅:1 天搞懂深度学习,我总结了 300 页 PPT
  6. 微信小程序wepy框架资源汇总
  7. 30.课时30.【Django模板】autoescape标签使用详解(Av61533158,P30)
  8. 2.图像作为函数 | 生成高斯噪音_8
  9. js中getBoundingClientRect的作用及兼容方案
  10. 中img拉伸_8个拉伸动作,帮你调动全身肌肉,提高柔韧性,缓解疲劳放松心情...
  11. 手机通讯录备份代码实现一
  12. multi-view face detection using deep convolutional neural networksz
  13. 解决OverflowError: int too large to convert to float的办法
  14. JSON RPC API
  15. 通用后台管理系统前端界面Ⅺ——信息列表页(弹窗复用增改、CRUD前端基础实现)
  16. 消息称聊天宝团队解散 罗永浩已经退出股东行列
  17. Keras的BN你真的冻结对了吗
  18. CREATE SCHEMA
  19. CNN网络模型大总结【持续更新中...】
  20. 范式BCNF,3NF的判断方法

热门文章

  1. 谈谈从事IT测试行业的我,对于买房买车有什么样的感受
  2. 如何能练就成一个卓越的程序员
  3. 年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)
  4. IT专家的十大热门领域
  5. 80C51的存储结构,这次一定,一定懂
  6. MKMapView iOS的地图详细应用
  7. tair和redis对比
  8. 基于android 订餐外卖APP,前台后台服务都齐全
  9. 我的世界正版租赁服务器,我的世界租赁服mod
  10. python创建一个上三角矩阵(没有初等行变化)