亚洲国产精品乱码一区二区,美景房屋2免费观看,哎呀哎呀在线观看视频高清国语,从镜子里看我是怎么C哭你

Article / 文章中心

12306官網(wǎng)模擬登陸之驗(yàn)證碼生成與驗(yàn)證初探

發(fā)布時(shí)間:2020-11-04 點(diǎn)擊數(shù):3370

來源:CSDN

前言

每一個(gè)學(xué)習(xí)過爬蟲的人對12306肯定都是有點(diǎn)想法,但在每年春節(jié)或一些假期經(jīng)歷過12306官網(wǎng)搶票后,這些念頭便逐漸不剩下多少了。有時(shí)候真的是活生生的人都瞅不出來
一直沒有勇氣去分析一下12306官網(wǎng)

請求分析

  1. 我們簡單抓包就可以找到生成驗(yàn)證碼的接口
    在這里插入圖片描述
    去除一些暫時(shí)無關(guān)的參數(shù)(僅分析驗(yàn)證碼)
    https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand
    在這里插入圖片描述
  2. 驗(yàn)證驗(yàn)證碼是否正確的接口
    其中answer表示驗(yàn)證碼的坐標(biāo)位置
    answer: 34,34,38,105
    在這里插入圖片描述

代碼思路

import requests


headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36'
}

login_url = 'https://kyfw.12306.cn/otn/resources/login.html'
session = requests.Session()
session.get(login_url)

image_url = 'https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand'
req = session.get(image_url, headers=headers).content
with open('code.png', 'wb') as f:
    f.write(req)
    
check_url = 'https://kyfw.12306.cn/passport/captcha/captcha-check'


point_dict = {
    '1': '37,40',
    '2': '112,40',
    '3': '187,40',
    '4': '262,40',
    '5': '37,120',
    '6': '112,120',
    '7': '187,120',
    '8': '262,120',
}
def get_point(indexs):
    indexs = indexs.split(',')
    temp = []
    for index in indexs:
        temp.append(point_dict[index])
    return ','.join(temp)

params = {
'answer': get_point(input('請輸入驗(yàn)證碼位置')),
'rand':'sjrand',
'login_site':'E',
}
response = session.get(check_url, params=params, headers=headers).text
print(response)

分析

12036 驗(yàn)證碼 問題就在如何確認(rèn)應(yīng)該點(diǎn)擊的坐標(biāo)位置,目前還沒有發(fā)現(xiàn)合適的做法,不知道有哪位大佬可以指點(diǎn)一下,有了解的大碼平臺(tái)也可以推薦一下。