認証プロキシを使った開発を頼まれたのですが、pythonのrequsetsで依頼人の認証プロキシを使うとエラーが起こってしまいます。
実行したコード
python
1from bs4 import BeautifulSoup 2import requests 3 4url = "https://expressvpn.com/what-is-my-ip" 5 6user="" 7pas="" 8ip="" 9 10proxies = { 11 "http": "http://"+user+":"+pas+"@"+ip+":80", 12 "https":"http://"+user+":"+pas+"@"+ip+":80" 13 } 14 15res = requests.get(url, proxies=proxies) 16html = BeautifulSoup(res.content, 'html.parser') 17for element in html.find_all('p', class_='ip-address'): 18 print(element.get_text())
エラー内容
python
1ProxyError: HTTPSConnectionPool(host='expressvpn.com', port=443): Max retries exceeded with url: /what-is-my-ip (Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 407 Proxy Authentication Required',)))
試したこと
- 上記のコードに自分が使っているNordVPNのプロキシを設定⇒正常に接続
- 念のためユーザーIDやパスワードをURLエンコード⇒依頼人のプロキシのみエラー
- 依頼人のプロキシをブラウザで手動設定⇒正常に接続
- python-seleniumで拡張機能を自作して依頼人のプロキシを設定⇒正常に接続
プロキシの違い
プロキシの違いとしてはNordVPNのプロキシはホスト名が「jp32nordvpn.com」というドメイン型に対して依頼人のプロキシは「111.111.11.11」というIPアドレス型の違いがあります。
何故か依頼人のプロキシのみrequestsで認証できません。よろしくお願いします。
追記
headersを追加しても同じ結果でした。また、パソコン自体のネット接続を依頼人のプロキシに変更し、接続を確認後
requests.get(url,headers=headers)
を実行した所やはり「407 Proxy Authentication Required」になりました。プロキシ側で何かを拒否してるのでしょうか。。。
あなたの回答
tips
プレビュー