質問
オライリージャパンから出ている書籍の例文をそのまま打ち込んだのですがエラーになります。
SSL認証エラー・プロキシ設定、一応試してみたのですが、うまく作動せずほかの原因を調べてみましたがわかりませんでした。
このエラーの原因がお分かりの方ご回答いただけると助かります。
windows10
python 3.7.3
対象のコード(修正)
python
1import requests,os,bs4,ssl 2context = ssl.SSLContext(ssl.PROTOCOL_TLSv1) 3res = requests.get('http://nostarch.com')#ここを実行したらエラー
エラー(修正)
python
1Traceback (most recent call last): 2 File "C:\Users\userid123\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3-1.25.3-py3.7.egg\urllib3\connection.py", line 160, in _new_conn 3 (self._dns_host, self.port), self.timeout, **extra_kw) 4 File "C:\Users\userid123\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3-1.25.3-py3.7.egg\urllib3\util\connection.py", line 80, in create_connection 5 raise err 6 File "C:\Users\userid123\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3-1.25.3-py3.7.egg\urllib3\util\connection.py", line 70, in create_connection 7 sock.connect(sa) 8TimeoutError: [WinError 10060] 接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みのホストが応答しなかったため、確立された接続は失敗しました。 9
追記試したこと
SSL認証・プロキシ設定
追記---プロキシ設定のコード
python
1import requests,os,bs4,ssl 2proxies = { 3http': 'http://000.00.00.000:12345', 4https': 'http://000.00.00.000:12345', 5} 6res = requests.get('http://nostarch.com', proxies=proxies)#ここを実行したらエラー 7
追記--プロキシ設定エラー
python
1Traceback (most recent call last): 2 File "C:\Users\userid123\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3-1.25.3-py3.7.egg\urllib3\connectionpool.py", line 597, in urlopen 3 self._prepare_proxy(conn) 4 File "C:\Users\userid123\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3-1.25.3-py3.7.egg\urllib3\connectionpool.py", line 807, in _prepare_proxy 5 conn.connect() 6 File "C:\Users\userid123\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3-1.25.3-py3.7.egg\urllib3\connection.py", line 370, in connect 7 ssl_context=context) 8 File "C:\Users\userid123\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3-1.25.3-py3.7.egg\urllib3\util\ssl_.py", line 355, in ssl_wrap_socket 9 return context.wrap_socket(sock, server_hostname=server_hostname) 10 File "C:\Users\userid123\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 412, in wrap_socket 11 session=session 12 File "C:\Users\userid123\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 853, in _create 13 self.do_handshake() 14 File "C:\Users\userid123\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 1117, in do_handshake 15 self._sslobj.do_handshake() 16ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056) 17
追記---SSL認証した場合のコード
python
1 2import requests,os,bs4,ssl 3context = ssl.SSLContext(ssl.PROTOCOL_TLSv1) 4res = requests.get('http://nostarch.com',context=context)#ここでエラー
追記---SSL認証した時のエラー
python
1Traceback (most recent call last): 2 File "<pyshell#5>", line 1, in <module> 3 res = requests.get('http://nostarch.com',context=context) 4 File "C:\Users\userid123\AppData\Local\Programs\Python\Python37\lib\site-packages\requests-2.22.0-py3.7.egg\requests\api.py", line 75, in get 5 return request('get', url, params=params, **kwargs) 6 File "C:\Users\userid123\AppData\Local\Programs\Python\Python37\lib\site-packages\requests-2.22.0-py3.7.egg\requests\api.py", line 60, in request 7 return session.request(method=method, url=url, **kwargs) 8TypeError: request() got an unexpected keyword argument 'context'
タイトルと質問内容が合ってないようです。タイトルを変更するのがいいと思います。(ソースからは、まだhtmlを獲得できてないようにしか見えません)
SSL認証エラーだったようでした の部分はまったく疑わしく思えます。
変更する前のソースと、そのソースで発生するエラーの方が、必須な気がします。
ご回答ありがとうございます!!
一度変更するまえのソースをあげて、今のものは消して、タイトルも訂正いたします。
不適切な質問内容にしてしまい、失礼いたしました。
再現できませんでした。(import requests ; res = requests.get('http://nostarch.com') で問題なく取得できます)。
ソースの問題ではなくて、ネットワーク環境の話になってしまいますね。
あるいは、たまたま1回だけ失敗したということはないでしょうか。
プロキシ設定を試してみたという話ですが、どう設定しましたか? そもそもプロキシが必要な環境で作業をしているのですか? (だとしたらそのような情報をなぜ伏せるのですか?)
サーバ名などは伏せて構いませんので「具体的に何をしたか?」が必要だと思います。
プロキシ情報を伏せたのは、以前こちらでプロキシの質問をした際にご回答くださった方のサイトを参考にやってみたら、その時問題なくできました。それで今回もその時と同じようにやったので、特にそのコードに問題があると判断しなかったため、のせませんでした。
すみません、一応のせてみますね!!
もしよろしければ見てもらえればと思います。
結局プロキシ経由で接続かつ利用者認証が必要な環境ということで合っていますか?
その認証情報が設定されてないということのような気がしましたが、そういう環境はこちらにないので私はここまででしょうかね。
何度もご回答いただき本当にありがとうございます。
>>結局プロキシ経由で接続かつ利用者認証が必要な環境ということで合っていますか?
おそらくそうだと思います。自動構成スプリクトでpacファイルが提示されていました。
ここまでご回答にお付き合いいただきありがとうございました。
プロキシ設定の「http'」「https'」の先頭の'が抜けているのは、コピペのミスですか?
ユーザー認証付きのプロキシ環境だと「'http://user:password@proxy_host:port'」のようになります。暗号化もプロキシが行っていませんか? 会社であればネットワーク管理者に確認するのが良いです。(セキュリティーが強化されて以前と設定が変わっている可能性もあります)