【Python】requestで403エラーが出るときの原因など

概要

pythonのrequestモジュールを使ってhttpリクエストした際に403エラーに遭遇することがあります。

import requests
r = requests.get('<url>')
print(r.status_code)
 > 403

このような場合のあるあるを書きます。

ID/PASS間違い

postメソッドで認証情報を渡す場合などにID, PWを間違えており、403で返ってきたことがありました。

request.post('http://<url>', data={'id':'id', 'pw':'pw'})

 

URL間違い

あるわけないと思いますが良くあります。特にURLがレスポンスを返してくれるところまで書いてない場合など。

“api”まで含めないとレスポンス返してもらえない場合

#NG例
http://urltesttesttest.com

#OK例
http://urltesttesttest.com /api

 

ADドメインの外からアクセス

ドメインの外にいる端末から一生懸命リクエスト送っている場合など。名前解決できない場合などはIP直打ちする必要あり。

名前解決できない場合

#NG例
request.post('http://domainserver01.com')

#OK例
request.post('http://192.168.1.1')

 

プロキシがうまく設定できていない

プロキシを介してインターネットへリクエストする場合はプロキシを明示的に指定しておくのが安心です。

proxies = {
"http":"http://httpproxy***.com",
"https":"https://httpproxy***.com"
}
request.get('http://<url>', proxy = proxies)

 

プロキシが邪魔してくる

逆にインターネットに出ていかずにLAN内のサーバーにアクセスしたい場合にはプロキシを明示的に無効化しておくのがいいです。

proxies = {
"http":None,
"https":None
}
request.get('http://<url>', proxy = proxies)

まとめ

requestメソッドはネットワークもトラブルシューティングの範囲に入ってくるのでハマるときはハマります。一回遭遇した事象はしっかり覚えておきたいです。

 

参考とさせて頂いたサイト

https://qiita.com/koharite/items/731fcf5146c7b0c4e800

https://www.it-mure.jp.net/ja/python/%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%EF%BC%9A%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7%E3%82%92%E7%84%A1%E5%8A%B9%E5%8C%96%E3%83%90%E3%82%A4%E3%83%91%E3%82%B9%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/1051194927/

Pythonに関する書籍

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です