好友
阅读权限10
听众
最后登录1970-1-1
|
楼主
呙翰林
发表于 2019-1-7 19:47
本帖最后由 呙翰林 于 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,操作更方便哦
下面是部分效果图(做出来了,还是蛮开心的),
本人属于初学者,如果有问题,我看到后会及时回复 (不保证能解决,),
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|