Pythonコード12306チェックケース

インポート要求
 から PILのインポートイメージの
 インポートjsonsの

requests.packages.urllib3.disable_warnings()

ヘッダ = {
     " のUser-Agent "" ;クローム/ 63.0のAppleWebKit / 537.36(ヤモリのようにKHTML、)のMozilla / 5.0(WOW64のWindows NT 10.0)。 3239.132サファリ/ 537.36 " 
} 
セッション = requests.session() 


获取验证码位置
デフ get_captcha_position(img_name = " 12303_captcha.png " ):
    URL = "https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand " ;
     試してください
        応答 = session.get(URL = urlには、ヘッダ=ヘッダ、=検証偽)
     を除いとしてConnectionError E:
         プリント(e)の
     他には
        (img_name、オープンで" WB " Fなど):
            f.write(response.content)
        してみてください人眼查看验证码
            :IMGとしてImage.open(img_name)と
                img.show( )
        を除くFileNotFoundError Eとして:
             プリント(E)
        =============================================== ======================== 
            入力ピクチャイメージインデックス番号は、オープン識別コードに応じて1つ、2つ、3枚の画像があってもよいです番号、番号の間にコンマで区切られ
            第二シートの第四及び第六行、第二の最初の行を示し、例えば2,4,6- 
            ----------------- ---------------------- 
                     | | | 
                0 | 1 | 2 | 3 
                     | | | 
            ----------- ---------------------------- 
                     | | | 
                4 | 5 | 6 | 7 
                     | | | 
            ----- ---------------------------------- 
            ================================================== ===================== 
            input_index =入力(' にセキュリティコードの場所を入力""スプリット(例えば2,4,6):' 戻りinput_index 


チェックコード
DEFのcheck_captcha(指数):
    index_list = STR(インデックス).split(公式検証コード12306としては、正しいコードが座標範囲を確認することで、我々は、(各コードの座標の中点を取ります約) 
    img_center_position = [ ' 35、35 '' 105,35 '' 175,35 '' 245,35 ''35105 ' ' 105105 ' ' 175105 ' ' 245105 ' ] 
    right_position = []
     のためにindex_list:
        right_position.append(img_center_position [INT(I)])
    right_position_str = " " .join(right_position)
    check_captcha_url = " HTTPS ://kyfw.12306.cn/passport/captcha/captcha-check 
    データ = {
         ' login_siteを'' E '#は固定
        ' RAND '' sjrand '#は固定
        ' 答え':right_position_str   #の中心に対応するコード文字列IDの座標
    }
     試み
        応答 = session.post(= check_captcha_url URL、データ=データ、 =ヘッダヘッダは、=を確認してください)偽
     除くConnectionError E AS:
         印刷(E)
     
        json_result = jsons.loads(response.content)
         プリント(json_result)
        check_codeint型=(json_result [ ' RESULT_CODE ' ])
        削除検証結果、4:5成功:検証が失敗した7:期限が切れる
        のIF check_codeの== 4 印刷(json_resultは、[ ' result_message ' ])
             を返すのelifの check_codeの== 5 印刷( json_result [ ' result_message ' ])
         印刷(json_result [ ' result_messageは' ])
         を返す


DEFメイン():
    img_index = get_captcha_position()
    check_captcha(img_index)


場合 __name__ == ' __main__ ' 
    メイン()

結果が示されています。

 

おすすめ

転載: www.cnblogs.com/yang-2018/p/10960170.html