Python 實現(xiàn)12306登陸

bee2f87833417584bd31248c26dab666.jpg
#!/usr/bin/env python

import requests
import urllib.parse
import random
import time
req = requests.session()
import sys
import re
import urllib3
import getpass  # 密文輸入

urllib3.disable_warnings()

#  登陸-------------------------
apptklist = []
newStrList = []


def signin():

    ran = random.uniform(1, 0)
    imgUrl = ('https://kyfw.12306.cn/passport/captcha/captcha-image?'
              'login_site=E&module=login&rand=sjrand&%s' % ran)
    print(imgUrl)
    imgresponse = req.get(url=imgUrl, verify=False)
    codeimg = imgresponse.content
    fn = open('code.png', 'wb')
    fn.write(codeimg)
    fn.close()
    codeStr = input('請輸入驗證碼的坐標:')
    a = ''
    b = ''
    c = ''
    d = ''
    e = ''
    f = ''
    g = ''
    h = ''
    if '1' in codeStr:
        a = '37,37,'
    if '2' in codeStr:
        b = '100,37,'
    if '3' in codeStr:
        c = '180,37,'
    if '4' in codeStr:
        d = '250,37,'
    if '5' in codeStr:
        e = '37,100,'
    if '6' in codeStr:
        f = '100,100,'
    if '7' in codeStr:
        g = '180,100,'
    if '8' in codeStr:
        h = '250,100,'

    newCodeStr = a+b+c+d+e+f+g+h
    newStr = newCodeStr[:-1]
    newStrList.append(newStr)

    url = 'https://kyfw.12306.cn/passport/captcha/captcha-check'
    data = {
        'answer':newStr,
        'login_site':'E',
        'rand':'sjrand'
    }
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)'
                      ' Chrome/63.0.3239.108 Safari/537.36',
    }

    response = req.post(url=url, data=data, headers=headers, verify=False)
    print('檢測圖片-----------', url)
    print(response.text)

    result = response.json()
    if result['result_code'] == '4':
        print('驗證碼校驗成功')
    else:
        print('驗證碼校驗失敗,請注意填寫正確的坐標')
        signin()
        return

    userName = input('Please input your userName:')
    # password = input('Please input your password:')
    password = getpass.getpass('Please input your password:')
    loginData = {

        'username':userName,
        'password':password,
        'appid':'otn'
    }
    headers = {

        'Host':'kyfw.12306.cn',
        'Referer':'https://kyfw.12306.cn/otn/login/init',
        'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2)'
                     ' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 '
                     'Safari/537.36'
    }

    response = req.post('https://kyfw.12306.cn/passport/web/login', data=loginData, headers=headers, verify=False)
    print('--------------登陸中--------------------')
    print('https://kyfw.12306.cn/passport/web/login')
    print('response', response.text.encode('utf-8').decode('utf-8'))
    fd = open("locate.html", 'wb+')
    fd.write(response.content)


    yzData = {
        'appid':'otn'
    }
    response = req.post('https://kyfw.12306.cn/passport/web/auth/uamtk', data=yzData, headers=headers, verify=False)
    print('---------------------第一次驗證---------------------')
    print(response.text)
    # print('typeof response',type(response))

    loginMessage = response.json()['newapptk']
    print('loginMessage=', loginMessage)

    # 第二次驗證開始++++++++++++++++++++++++++++++
    yz2Data = {
        'tk': loginMessage
    }
    response = req.post('https://kyfw.12306.cn/otn/uamauthclient', data=yz2Data, headers=headers,verify=False)
    print('---------------------第二次驗證---------------------')
    print(response.text)
    apptk = response.json()['apptk']
    apptklist.append(apptk)


def buy():

    print(newStrList)
    req.headers['Referer'] = 'https://kyfw.12306.cn/otn/leftTicket/init'
    result = req.post('https://kyfw.12306.cn/otn/login/checkUser')
    print('----------------購票系統(tǒng)--------------')
    print(result.text)
    print('驗證登錄狀態(tài)成功checkUser')
    headers = {
        'Referer':'https://kyfw.12306.cn/otn/leftTicket/init',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36'
                      ' (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36',
    }
    data = {
        # 'secretStr':reserve[1],
        'train_date':'2018-01-17',
        'back_train_date':'2018-01-17',
        'tour_flag':'dc',   # dc 單程
        'purpose_codes':'ADULT',    # adult 成人票
        'query_from_station_name':'成都',
        'query_to_station_name':'長沙',
        'undefined':''
    }


def ticket():

    # 先登陸、然后查詢車票信息
    signin()

    url = ('https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_date=2018-02-10&'
           'leftTicketDTO.from_station=SZQ&leftTicketDTO.to_station=NFG&purpose_codes=ADULT')
    try:
        response = requests.get(url, verify=False)
        result = response.json()
        print(result)
        return result['data']['result']
    except Exception as e:
        return None


if __name__ == "__main__":

    # ticket()
    # with open('./aaa.xlsx', encoding='utf-8') as f:
    #
    #     print(f.read())
    dic = {}
    context = [('IDS_ABOUT_OFFICAL_PHONE', 'Slu?beni telefon'),
               ('IDS_ABOUT_OFFICAL_WEBSITE', 'Slu?beno web-mjesto'),
               ('IDS_ABOUT_OFFICIAL_PHONE_CALL_NOT_SUPPORT', 'Trenutni ure?aj ne mo?e pozivati.')]
    for i in range(len(context)):
        print(i)
        dic.setdefault(context[i][0],context[i][1])
    print(dic)
    print(dic.keys())

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末刁标,一起剝皮案震驚了整個濱河市野来,隨后出現(xiàn)的幾起案子宪拥,更是在濱河造成了極大的恐慌,老刑警劉巖移国,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兆龙,死亡現(xiàn)場離奇詭異壁熄,居然都是意外死亡,警方通過查閱死者的電腦和手機诚欠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門顽染,熙熙樓的掌柜王于貴愁眉苦臉地迎上來漾岳,“玉大人,你說我怎么就攤上這事粉寞∧峋#” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵唧垦,是天一觀的道長捅儒。 經(jīng)常有香客問我,道長振亮,這世上最難降的妖魔是什么巧还? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮坊秸,結(jié)果婚禮上麸祷,老公的妹妹穿的比我還像新娘。我一直安慰自己褒搔,他們只是感情好阶牍,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著星瘾,像睡著了一般荸恕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上死相,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音咬像,去河邊找鬼算撮。 笑死,一個胖子當著我的面吹牛县昂,可吹牛的內(nèi)容都是我干的肮柜。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼倒彰,長吁一口氣:“原來是場噩夢啊……” “哼审洞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起待讳,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤芒澜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后创淡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體痴晦,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年琳彩,在試婚紗的時候發(fā)現(xiàn)自己被綠了誊酌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片部凑。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖碧浊,靈堂內(nèi)的尸體忽然破棺而出涂邀,到底是詐尸還是另有隱情,我是刑警寧澤箱锐,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布比勉,位于F島的核電站,受9級特大地震影響瑞躺,放射性物質(zhì)發(fā)生泄漏敷搪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一幢哨、第九天 我趴在偏房一處隱蔽的房頂上張望赡勘。 院中可真熱鬧,春花似錦捞镰、人聲如沸闸与。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽践樱。三九已至,卻和暖如春凸丸,著一層夾襖步出監(jiān)牢的瞬間拷邢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工屎慢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瞭稼,地道東北人。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓腻惠,卻偏偏與公主長得像环肘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子集灌,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 2017年1月25日 日精進 體驗 吸收 釋放 分享 轉(zhuǎn)化 九字真言 體驗入 找核心 轉(zhuǎn)身用 今天...
    凌勝亮閱讀 144評論 0 0
  • 睡得很好贱纠。不是特別難過笛匙,但愿他們能承受碳褒。
    王婷婷_9db0閱讀 68評論 0 0
  • 2018.1.25 星期四 陰雨 終于和女兒搬完從倉庫拉來的洗發(fā)水应役,毛毛細雨?中,看著這個時候懂事的女...
    羅永梅閱讀 147評論 0 0
  • 昨天老公不在家唆阿,有種回歸到一個人的興奮莱没,但是,也覺得很想念酷鸦,好像少了什么饰躲,魂不守舍牙咏。曾以為,結(jié)了婚之后嘹裂,就明白了什...
    從容不迫的貓閱讀 349評論 0 1
  • 30分鐘《歷史》資料妄壶。戰(zhàn)國時期的社會變化,公元前475年至公元前221年寄狼,三晉分家:晉國被韓趙魏瓜分丁寄,田氏代齊:也...
    滿溢滿溢閱讀 132評論 0 0