
組織内プロキシでpythonコードからのHTTPS通信が動かなかったときの設定について
思ったよりいろいろ明示的に設定しなくてはいけなかったのでメモ。
環境変数だけでいくと思うじゃん。いかなかった。ありがとうChatGPT。
import os
import ssl
from urllib.request import ProxyHandler, build_opener, install_opener
# 環境変数にプロキシを設定
proxy = "http://proxy.example.com:8080"
os.environ["HTTP_PROXY"] = proxy
os.environ["HTTPS_PROXY"] = proxy
# カスタムSSL証明書の設定
cafile_path = "/path/to/custom_certificate.crt"
# SSLコンテキストを作成し、CA証明書を設定
ssl_context = ssl.create_default_context(cafile=cafile_path)
# プロキシハンドラを作成し、カスタムオープナーを作成
proxy_handler = ProxyHandler(proxy)
opener = build_opener(proxy_handler)
opener.add_handler(proxy_handler)
install_opener(opener)
# HTTPS通信の際にSSLコンテキストを利用
ssl._create_default_https_context = lambda: ssl_context
ラムダ関数出てきてあたたかいかおをしました。
ぼくラムダ関数わりとすき。使いたくはない。
これで組織内ポリシーでブロックされてないところは通るようになりました。さて。どうしようかな。いやほんとに。
よーしこれでstabilitymatrixもやり直すぞーって思ったらwindows環境だとpipでcerifiを入れろと言われた。ややこしすぎる。
でも一番ゲームできるのwindowsだからwindowsでどうにかしたいんだよ。
Qiitaでやれといわんばかりの記事。
いいなと思ったら応援しよう!
