吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7338|回复: 48
收起左侧

[Python 转载] 12306 利用python requests 模拟登录

[复制链接]
17788210295 发表于 2019-7-24 18:21
本帖最后由 17788210295 于 2019-7-24 18:23 编辑

今天研究半天 验证码校验已经通过,但是卡在了关键的登录一步,一直提示账号未登录
有没有大神知道12306新增了哪一个隐藏的post请求  网络存在问题是什么导致的
源码;
[Python] 纯文本查看 复制代码
import requests
from PIL import Image
import json
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",
}
head = {
    'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299",
    "Host": "kyfw.12306.cn",
    "Referer": "https://kyfw.12306.cn/otn/resources/login.html"
}

def get_img_code():
    img_url = 'https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand'
    img = session.get(url=img_url, headers=head).content
    with open('code.jpg', 'wb') as f:
        f.write(img)
def check_img():
    check_url = 'https://kyfw.12306.cn/passport/captcha/captcha-check'
    img = Image.open('code.jpg').show()
    print("+----------+----------+----------+----------+")
    print("|    1     |    2     |    3     |    4     |")
    print("|----------|----------|----------|----------|")
    print("|    5     |    6     |    7     |    8     |")
    print("+----------+----------+----------+----------+")
    input_code = input("请在1—8中选择输入验证图片编号,以半角','隔开。(例如:1,3,5):")
    answer_code = ''
    try:
        for i in input_code.split(','):
            answer_code += ',' + answer[i] if (i is not input_code[0]) else answer[i]
    except Exception as e:
        print('输入错误请重新输入!')
        check_img()
    data = {
        'answer': answer_code,
        'login_site': 'E',
        'rand': 'sjrand',
    }
    check_result = session.post(url=check_url, data=data, headers=head).text
    check_result = json.loads(check_result)
    print(check_result)
    if check_result['result_code'] == '4':
        print('*' * 20 + '验证码正确' + '*' * 20)
        login(answer_code)
    else:
        get_img_code()
        check_img()


def login(answer_code):
    # name = input('账号:')
    # pwd = input('密码:')
    name = '*********'
    pwd = '*********'
    login_url = 'https://kyfw.12306.cn/passport/web/login'
    formdata = {
        'username': name,
        'password': pwd,
        'appid': 'otn',
        'answer': answer_code
    }

    login_result = session.post(url=login_url, data=formdata, headers=head)
    login_result.encoding='utf-8'
    print(login_result.text)
    with open('3.html','w',encoding='utf-8') as f:
        f.write(login_result.text)
# def user_login():
#     url='https://kyfw.12306.cn/otn/login/userLogin'
#     page=requests.get(url=url).text
#     print(page)
# def check_useer():
#     url = 'https://kyfw.12306.cn/otn/login/checkUser'
#     data = {
#         '_json_att': ''
#     }
#     requests.post(url=url, data=data,headers=head)

def uamtk():
    url = 'https://kyfw.12306.cn/passport/web/auth/uamtk'
    data = {
        'appid': 'otn',
    }
    uamtk_page = session.post(url=url, data=data, headers=head).text
    print(uamtk_page)


if __name__ == '__main__':
    session = requests.Session()
    get_img_code()
    check_img()
    uamtk()




登录页面

登录页面

post登录网址

post登录网址

post验证码 后响应

post验证码 后响应

免费评分

参与人数 4吾爱币 +4 热心值 +3 收起 理由
wating + 1 + 1 我也遇到这种问题,请问您现在解决了吗? 如果解决了是怎样解决的呢?
me17 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Coolplay + 1 + 1 看不懂,但很强
Hchien + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

uumesafe 发表于 2019-7-27 11:15
本帖最后由 uumesafe 于 2019-7-27 11:17 编辑

12306.PNG
在captcha-image64中
Set-Cookie:
_passport_ct=*****; Path=/passport


在login的时候,cookie中, Set-Cookie: _passport_ct=; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/passportSet-Cookie: uamtk=


在uamtk的时候,cookie中,新增 uamtk,删除_passport_ct 。

其他的略....
芒果稀饭 发表于 2019-7-25 15:13
weidian 发表于 2019-7-24 18:55
z卡卡 发表于 2019-7-24 19:05
路过帮顶
ysc914 发表于 2019-7-24 19:32
路过帮顶
刘爱学 发表于 2019-7-24 19:36
感觉比较吊
reidme 发表于 2019-7-24 19:51
那么变态的验证码也能过?
牵着手的手 发表于 2019-7-24 20:55
感觉又是一个隐藏的大BOSS,路过帮顶。。。。。
元贞 发表于 2019-7-24 21:22
好叼的样子
chm008 发表于 2019-7-24 21:28
支持下,验证码校验是什么思路啊?
念汐 发表于 2019-7-24 21:42
顶顶顶 厉害。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 04:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表