鱼C论坛

 找回密码
 立即注册
查看: 2032|回复: 4

[已解决]python登录12306一直无法验证

[复制链接]
发表于 2018-12-13 20:44:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
登录12306,一直验证码错误
12306改版之后获取验证码图片的URL后面几段参数有一个一直增加,剩下几个找不到规律啊
有没有大神告知一下我这代码应该怎么改才能登录上 或者告知一下有没有什么错误的地方,代码如下:


import requests


# 获取验证码图片
def get_captcha():
    session = requests.Session()
    captcha_url = 'https://kyfw.12306.cn/passport/captcha/captcha-image64?login_site=E&module=login&rand=sjrand&1544615751202&callback=jQuery1910743787401637102_1544615373331&_=1544615373338'
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36'}
    resp = session.get(captcha_url,headers = headers).text
    resp = eval(resp[44:-2])
    image = str(resp['image'])
    img = base64.b64decode(image)
    f = open('image.jpg','wb')
    f.write(img)
    f.close

# 验证图片
def check_captcha():
    answer_img = []
    answer = ''
    site = {'1':'30,45',
            '2':'110,43',
            '3':'185,47',
            '4':'250,48',
            '5':'35,120',
            "6":'100,117',
            '7':'190,121',
            '8':'246,122'}
    choice = input('请输入验证图片序号,(例如“15”或“347”等):')
    choice = list(choice)
    for each in choice:
        answer_img.append(site[each])
    for each in answer_img:
        answer += str(each) + ', '
    answer = answer[:-1]
    return str(answer)

# 登录12306

def login():
    login_url = 'https://kyfw.12306.cn/passport/web/login'
    username = input('请输入你的用户名:')
    password = input('请输入你的密码:')
    get_captcha()
    session = requests.Session()
    data = {'username':username,
            'password':password,
            'appid':'otn',
            'answer':check_captcha()}
    headers = {'Host':'kyfw.12306.cn',
               'Origin':'https://kyfw.12306.cn',
               'Referer':'https://kyfw.12306.cn/otn/resources/login.html',
               'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36'}
    resp = session.post(login_url,headers=headers,data=data)
    print(resp.text)


login()
最佳答案
2018-12-13 21:21:02
  1. import json
  2. import requests

  3. requests = requests.session()
  4. img_url = 'https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand&0.3993011940822455'
  5. headers = {'User_Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:61.0) Gecko/20100101 Firefox/61.0'}
  6. rep = requests.get(img_url,headers=headers)
  7. with open('12306.jpg','wb') as f:
  8.     f.write(rep.content)

  9. url = 'https://kyfw.12306.cn/passport/captcha/captcha-check'
  10. x_y = input()
  11. data = {
  12.     'answer':x_y,
  13.     'login_site':'E',
  14.     'rand':'sjrand'
  15. }
  16. html = requests.post(url, data=data).text
  17. print(json.loads(html))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-13 21:21:02 | 显示全部楼层    本楼为最佳答案   
  1. import json
  2. import requests

  3. requests = requests.session()
  4. img_url = 'https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand&0.3993011940822455'
  5. headers = {'User_Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:61.0) Gecko/20100101 Firefox/61.0'}
  6. rep = requests.get(img_url,headers=headers)
  7. with open('12306.jpg','wb') as f:
  8.     f.write(rep.content)

  9. url = 'https://kyfw.12306.cn/passport/captcha/captcha-check'
  10. x_y = input()
  11. data = {
  12.     'answer':x_y,
  13.     'login_site':'E',
  14.     'rand':'sjrand'
  15. }
  16. html = requests.post(url, data=data).text
  17. print(json.loads(html))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-13 21:42:08 | 显示全部楼层

这个是以前的验证码网址,11月有一次改版后改版后好像不一样了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-12-13 21:49:38 | 显示全部楼层
园田海参 发表于 2018-12-13 21:42
这个是以前的验证码网址,11月有一次改版后改版后好像不一样了

还真不行了,我再研究一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-13 22:22:53 | 显示全部楼层
幽梦三影 发表于 2018-12-13 21:49
还真不行了,我再研究一下

12306获取验证码的网站变了 十一月改版了一次 而且登录的form data和以前不一样 好像是验证码和登录信息一起验证的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 14:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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