本文来源吾爱破解论坛
本帖最后由 呙翰林 于 2019-1-7 20:32 编辑
2019年1月7日 最新python 12306抢票源代码
本人新手,由于最近春节回家高峰期,想着用Python 写一个抢票软件,亲测可用,供大家学习交流
注意事项:
1 . 默认手动输入验证码坐标,附带云打码接口,懂得可以自己弄一下
2 . 一些个人隐私信息自己填写
3 . 抢票完成后会有邮箱接口,发送邮箱提示抢票成功(懂的可以自己弄一下)
4 . 运行环境 python 2.7
下面上部分代码,看看效果 :
[Python] 纯文本查看 复制代码
#_*_coding:utf-8_*_ import urllib2,urllib import ssl import cookielib import simplejson import img import re from youjian import send from station import station_names stationDict={} for i in station_names.split('@')[1:]: stationList=i.split('|') stationDict[stationList[1]]=stationList[2] c=cookielib.LWPCookieJar() cookie=urllib2.HTTPCookieProcessor(c) opener=urllib2.build_opener(cookie) urllib2.install_opener(opener) headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0', 'Referer':'https://kyfw.12306.cn/otn/resources/login.html' } ssl._create_default_https_context=ssl._create_unverified_context #v出发时间 train_date='2019-01-25' #起始站 fromStation='深圳' from_station=stationDict[fromStation] #终点站 toStation='武汉' to_station=stationDict[toStation] #登陆操作 def login(): req=urllib2.Request( 'https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand' ) req.headers imgCode=opener.open(req).read() with open('code.png','wb') as fn: fn.write(imgCode) req=urllib2.Request( 'https://kyfw.12306.cn/passport/captcha/captcha-check' ) req.headers #code=img.code() code=raw_input('请输入验证码位置:') date={ 'callback':'jQuery1910948054855148424_1546424454404', 'answer':code, 'rand':'sjrand', 'login_site':'E', '_':'1546424454425' } date=urllib.urlencode(date) html=opener.open(req,date).read() req=urllib2.Request( 'https://kyfw.12306.cn/passport/web/login' ) req.headers data={ 'username':'账号',#12306账号密码 'password':'密码', 'appid':'otn', } data = urllib.urlencode(data) html = opener.open(req, data).read() result=simplejson.loads(html) if result['result_code']==0: print '登陆成功' #登陆成功后的第一次访问 req = urllib2.Request( 'https://kyfw.12306.cn/passport/web/auth/uamtk' ) data = { 'appid':'otn' } data = urllib.urlencode(data) req.headers = headers html = opener.open(req,data=data).read() result=simplejson.loads(html) tk=result['newapptk'] # ?第二次访问 req = urllib2.Request( 'https://kyfw.12306.cn/otn/uamauthclient' ) data = { 'tk':tk } data = urllib.urlencode(data) req.headers = headers html = opener.open(req,data=data).read() #查询是否登录成功 '''req = urllib2.Request( 'https://kyfw.12306.cn/otn/index/initMy12306Api' ) req.headers=headers html = opener.open(req).read() print html return True''' return True print '登陆失败,正在重新登录...'
下载地址:
链接:https://pan.baidu.com/s/1tJ3x5_cor2irMStKrq225g
提取码:rlab
复制这段内容后打开百度网盘手机App,操作更方便哦
下面是部分效果图(做出来了,还是蛮开心的),
3.png (110.63 KB, 下载次数: 6)
下载附件 保存到相册
1.png (23.4 KB, 下载次数: 1)
下载附件 保存到相册
2.png (26.53 KB, 下载次数: 1)
下载附件 保存到相册
本人属于初学者,如果有问题,我看到后会及时回复 (不保证能解决,),
本帖被以下淘专辑推荐: · 个人收藏|主题: 528, 订阅: 130
版权声明:
本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。