关于抢火车票的那些事儿(三)

关于抢火车票的那些事儿(三)

上一节 中我们顺利登陆了12306,但是你以为这样就顺利登陆了?
那么你就错了。。


登陆之后你还需要进行两步的验证,不然在进行其他操作的时候就容易被要求重新登陆。

上一节我们收到了数据
{'result_message': '登录成功', 'result_code': 0, 'uamtk': 'g-lT6rQ5XVZsZUTOKyohI46jpJR38fma2_IBxdAfyX8-bS6ldq4140'}

'uamtk'看起来这么复杂,应该是有用的?
是的,这个在我们的第一次验证里要用到,这是一个环环相扣的过程、


Step1:

uamtk做Cookie去做第一次验证。
Fiddler捕捉登陆后的第一次验证过程:

self.session.cookies['uamtk'] = loginResult['uamtk']

        #4 用户登录第一次验证+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

        url = message.firstLoginVerifyUrl
        data = {
            'appid': 'otn'
        }
        response = self.session.post(url, data=data,)
        userVerify = response.json()
        print('第一次验证')
        print(userVerify)
        if userVerify['result_code'] != 0:
            print('验证失败(uamtk) code:{}'.format(userVerify['result_code']))

这样我们会得到第一步验证的结果
这时我们会看到收到的回复数据表示我们第一次验证通过了,同时我们看到apptk这个字段好像还要用的样子。

没错,我们第二次验证的时候需要它。

Step2:

Fiddler捕捉登陆后的第二次验证过程:


向验证url Post 第一步验证返回给我们的数据,可以参考以下代码:


    def secLoginVerify(self,newapptk):

        print('第二次验证')
        newAppTkErrorCount = 0
        url = message.secLoginVerifyUrl
        data = {
            'tk': newapptk
        }
        while True:
            if newAppTkErrorCount > 15:
                print('newAppTk获取失败,退出程序')
                sys.exit()
            response = self.session.post(url, data = data)
            try:
                verifyResult = response.json()
                print(verifyResult)
                return verifyResult
            except: #json.decoder.JSONDecodeError:
                newAppTkErrorCount += 1

这时候我们会收到验证通过的数据:

恭喜你,这次是真正成功登陆了~
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值