基本信息
源码名称:python 手动验证并模拟登录12306
源码大小:1.55KB
文件格式:.py
开发语言:Python
更新时间:2018-08-15
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559

本次赞助数额为: 2 元 
   源码介绍


提示让输入验证码序号的时候(多个序号 以逗号隔开即可),就可以在同目录下打开图片验证码captcha.jpg,类似如下:



import requests
from random import random
import conf


point = {
    '1': '32,67',
    '2': '107,67',
    '3': '180,67',
    '4': '250,67',
    '5': '32,129',
    '6': '107,129',
    '7': '180,129',
    '8': '250,129',
}


def get_answer(index):
    index = index.split(',')
    temp = []
    for item in index:
        temp.append(point[item])
    return ','.join(temp)


session = requests.Session()
headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko'
                      ') Chrome/67.0.3396.99 Safari/537.36'
    }
s = random()
captcha_url = 'https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand&%s' % s
response = session.get(captcha_url)
with open('captcha.jpg', 'wb') as f:
    f.write(response.content)

check_captcha_url = 'https://kyfw.12306.cn/passport/captcha/captcha-check'
data = {
    'answer': get_answer(input('请输入验证码的序号>>>:')),
    'login_site': 'E',
    'rand': 'sjrand'
}
response = False
while not response:
    response = session.post(check_captcha_url, data=data, headers=headers)
    if response:
        print('验证成功')
    else:
        print('请重新验证')


# 发送登录请求的方法
loginUrl = 'https://kyfw.12306.cn/passport/web/login'
data = {
    'username': conf.username,
    'password': conf.password,
    'appid': 'otn'
}
result = session.post(url=loginUrl, data=data, headers=headers)
if result:
    print('登录成功')

# 查询用户联系人信息