インポート要求 から 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__ ' : メイン()
結果が示されています。