经过倒腾12306的登录,还是实现了,请求头很重要...各位感兴趣的可以继续写下去.....
import sys
import time
import requests
from PIL import Image
import json
import os
import Headers
import SessionUtil
import UrlUtils
class Ticket(object):
def __init__(self):
self.answer = {
"1": "40,40",
"2": "110,40",
"3": "180,40",
"4": "260,40",
"5": "40,120",
"6": "110,120",
"7": "180,120",
"8": "260,120",
}
self.answer_code=''
self.tk = ''
def getDEVICEID(self):
r = requests.get(UrlUtils.DEVICE_url, headers=Headers.BaseHead).text
try:
dic = json.loads(r[18:-2].replace(" ", ""))
except Exception:
return ""
return dic
# 初始化 获取设备id 设置为cookie 必须
def initialize(self):
dic = self.getDEVICEID()
if dic == "":
print("网络获取指纹失败!使用默认id")
RAIL_EXPIRATION = "1576651914389"
RAIL_DEVICEID = "lBJStCNl0YGo_HVkGtwOo2LWziXcwzpIk5gc2vAILNYdRfaeZ04nJtZ1JZwgQIssMDksn10rAz6Hz-bekeufhAusaKJId8f2BCg05ocgrzc8-chv8h4IB-lQ9H04XjLXr2fbnHw-SLZga3PewEfgPz2s-mhp7NAz"
else:
print("网络获取指纹成功!")
RAIL_EXPIRATION = dic["exp"]
RAIL_DEVICEID = dic['dfp']
SessionUtil.setCookie("RAIL_EXPIRATION", RAIL_EXPIRATION)
SessionUtil.setCookie("RAIL_DEVICEID", RAIL_DEVICEID)
def conf(self):
res = SessionUtil.session.post(url=UrlUtils.Conf_url, data=None, headers=Headers.ConFHeader)
def uamtkstatic(self):
data = {
'appid': 'otn'
}
SessionUtil.session.post(url=UrlUtils.UamtkStatic_url, data=data, headers=Headers.UamtkStaticHead)
def get_img_code(self):
try:
img = SessionUtil.session.get(url=UrlUtils.Down_mg_url, headers=Headers.BaseHead).content
with open('code.jpg', 'wb') as f:
f.write(img)
except Exception:
print("下载图片错误! 等待重试~~")
time.sleep(1)
self.get_img_code()
def check_img(self):
try:
Image.open('code.jpg').show()
except Exception:
time.sleep(2)
Image.open('code.jpg').show()
print("+---1-------+----------+----------+----------+")
print("| 1 | 2 | 3 | 4 |")
print("|----------|----------|----------|----------|")
print("| 5 | 6 | 7 | 8 |")
print("+----------+----------+----------+----------+")
input_code = input("请在1—8中选择输入验证图片编号ÿ