I-VPN ivuliwe, idashibhodi yangaphakathi ivuleka kusiphequluli, futhi umbhalo we-Python usakhipha iphutha le-proxy. Kuleso sithombe akukho okungalungile ngomhubhe: umhumushi ufunda ikheli le-proxy endaweni yakhe futhi uthumela isicelo lapho. Le ncwadi yokuhola ifunda indawo ezungezile okubonwa inqubo ngempela, isebenzisa ukukhishwa okuncane kakhulu, bese kuthi ngemva kwalokho kuphela icabangele inqubomgomo yesikhathi esicacile. Isinyathelo ngasinye siphetha ngomyalo okukhipha kwawo kunquma ukuthi uyaqhubeka yini.

Funda indawo ezungezile okubonwa inqubo ngempela

Izilungiselelo ze-proxy zedeskithophu, ukukhishwa kwe-shell kanye nemigqa ye-Environment= yeyunithi ye-systemd kuyimithombo emithathu ehlukene, futhi i-Requests ifunda kuphela eyokugcina eyizuzayo. Gijimisa ukuxilonga ngezansi ku-shell, ku-container noma kuyunithi efanayo egijimisa umbhalo ohlulekayo, hhayi kutheminali yakho yokusebenzisana. Ukuguquguquka okukhishiwe ku-shell yakho yokungena akubonakali kunqubo ye-container, futhi lelo gebe lichaza imibiko eminingi nge-proxy evela ndawonye. Imiyalo yomibili iphrinta idatha efanayo emazingeni ahlukene emininingwane.

env | grep -i -E 'proxy|requests_ca_bundle|curl_ca_bundle'
python3 -c "import os;[print(k,'=',v) for k,v in sorted(os.environ.items()) if 'proxy' in k.lower()]"

Kokubili ukupela kokuguquguquka ngakunye kuyafundwa, futhi okufakiwe okuphindiwe kusetshenziswa ngohlelo inqubo ekutholile, ngakho i-HTTP_PROXY ephelelwe yisikhathi ingadlula inani olisha ukuyikhipha. Ukuguquguquka kwebhange le-CA nakho kubalulekile lapha, ngoba kushintsha ukuthi i-verify ixazululeka kukho ngaphandle kokuvela ndawo kukhodi. Uma okukhiphayo kungenalutho, indawo ezungezile ayiyona inkinga yakho futhi ungayeka ukufunda le sigaba. Uma kubala i-proxy ongayazi, thola ifayela noma iyunithi eyisethayo ngaphambi kokushintsha noma yini.

Buza i-Requests ukuthi izokwenzani nge-URL ethile. Lolu cingo lubonisa amanani e-proxy, verify ne-cert ahlanganisiwe alolo cingo ngaphandle kokuthumela iphakethe.

python3 -c "import requests;s=requests.Session();print(s.merge_environment_settings('https://api.corp.example/status',{},None,None,None))"

Okufakiwe kwe-proxies okungenalutho kumsingathi wangasese kuyimpendulo yakho, futhi inani le-verify eliphrintiwe likutshela ukuthi isicelo sizothemba ibhange le-CA eliphi. Uma kokubili kubonakala kulungile, ukwehluleka kusezingeni elijulile futhi kufanele weqe esigabeni sokuqinisekisa. Ungaqageli kusuka kukhodi: ukuhlanganiswa kwenzeka ngasikhathi ngasinye sesicelo, yingakho isikhathi esisodwa singaziphatha ngendlela ehlukile kumasingathi amabili.

Susa umsingathi wangasese ngaphambi kokukhubaza noma yini

Uma i-proxy idingeka ngempela kwezinye izindawo, ukulungiswa okuncane ukukhishwa kulo msingathi. Engeza ohlwini olukhona esikhundleni sokulushintsha, ngoba ukususa i-NO_PROXY kuphula yonke enye indawo yangaphakathi eyayithembele kuyo. Imiyalo ngezansi yengeza okufakiwe bese ibuza i-Requests ukuthi ukweqa kuyasebenza yini.

export NO_PROXY="${NO_PROXY:+$NO_PROXY,}api.corp.example,.corp.example"
python3 -c "import requests;print(requests.utils.should_bypass_proxies('https://api.corp.example/status',None))"

Ukufanisa kwenzeka ngokwesijobelelo somsingathi, ngakho i-.corp.example ihlanganisa isizinda sonke kuyilapho i-api.corp.example ihlanganisa igama elilodwa. Inkanyezi engenalutho ikhubaza i-proxy kuyo yonke imisingathi futhi cishe ayikaze ibe yilokho okufunwa umsebenzi wokukhiqiza. Ukuthi okufakiwe kwe-CIDR kuhlonishwa yini kuncike ezinguqulweni ze-Requests ne-urllib3 esithombeni, ngakho hlola okufakiwe okuqondile esikhundleni sokucabanga ukuthi kuyasebenza. Hlola umphumela we-should_bypass_proxies ku-URL yangempela, hhayi egameni lomsingathi olibhale kusuka enkumbulweni.

Gcina izendlalelo ezimbili zihlukene ekhanda lakho. Ukweqa i-proxy ye-HTTP akweqi i-VPN, ngoba isinqumo se-proxy senzeka elabhulali futhi isinqumo somhubhe senzeka kuthebula lomzila wekherneli.

Khubaza i-trust_env kuphela njengenqubomgomo yesikhathi ehlosiwe

Uma wonke umsebenzi kufanele ungayinaki indlela ehlelekile yendawo ezungezile, yakha isikhathi ngokusobala futhi urekhode isinqumo kukhodi. Lokho kuyinqubomgomo, hhayi indlela yokweqa, futhi kungokwe-diff umhloli angayibona. Isibonelo ngezansi sigcina isikhathi sokulinda, indlela ecacile ye-CA kanye nokuhlolwa kwesimo.

import requests

with requests.Session() as session:
    session.trust_env = False
    response = session.get(
        "https://api.corp.example/status",
        timeout=(5, 20),
        verify="/etc/ssl/certs/corp-ca.pem",
    )
    response.raise_for_status()

Ukukhubaza i-trust_env kushintsha izimilo ezintathu ngesikhathi esisodwa, futhi kube kuyinye kuphela ezikhuluma nge-proxy. I-Requests iyeka ukufunda izifakazelo ze-.netrc, futhi ukuguquguquka kwe-REQUESTS_CA_BUNDLE ne-CURL_CA_BUNDLE kuyeka ukuthinta i-verify, okubese kubuyela esitolo sezitifiketi esihlanganisiwe. Uma inhlangano yakho iqeda i-TLS nge-CA yayo, lokho kubuyela emuva kuveza iphutha lokuqinisekisa elibonakala lingahlobene nokushintsha okusanda kwenziwa. Ukudlulisa i-verify ngokusobala yikho okugcina imiphumela emibili ihlukene.

Okungafanele ukwenze ukusetha i-verify=False ukuze uthulise iphutha elivelayo. Lokho kushintshanisa ukucushwa kwe-proxy okungalungile ngokuxhumana okungaqinisekisiwe, futhi kufihla inkinga yesitifiketi okwakufanele ukukhishwa kuyidalule.

Qinisekisa isendlalelo esihlulekayo futhi gcina indlela yokuhlehla

Izingozi ezintathu zibonakala zifana kusigcino futhi azihlanganyeli lutho: i-proxy engakwazi ukufinyelela indawo ikhipha i-ProxyError noma ibuyisela i-502, inkinga yokuthembela ikhipha i-SSLError, futhi ukunqatshwa kwesicelo kubuyisela i-401 noma i-403. Phinda ukhiqize isicelo ngaphandle kwe-Requests ukuze ubone ukuthi isiphi osinakho. Imiyalo ngezansi isusa i-proxy, ihlola uchungechunge lwezitifiketi bese iphinda ukubiza ngokusebenzisa ilabhulali.

curl -sv --noproxy '*' https://api.corp.example/status -o /dev/null
openssl s_client -connect api.corp.example:443 -servername api.corp.example </dev/null
python3 -c "import requests;r=requests.get('https://api.corp.example/status',timeout=10);print(r.status_code)"

Uma ukubiza kwe-curl kuphumelela futhi ukubiza kwe-Python kwehluleka, indawo ezungezile isengumehluko. Uma kokubili kwehluleka esigabeni se-TLS, i-proxy yayingakaze ibe inkinga futhi uchungechunge lwezitifiketi yilona. Uma kokubili kubuyisela i-401, isicelo safinyelela uhlelo futhi umsebenzi osele ukuqinisekisa. Ukurekhoda ukuthi yikuphi kokuthathu okubonile kusindisa ihora kumuntu olandelayo.

Ukuhlehla kuwumugqa owodwa kuzo zombili izinhlangothi: susa ukukhishwa, noma phendula i-trust_env emuva. Gcina inani le-NO_PROXY langaphambilini ngaphambi kokwengeza, futhi ukhethe umbhalo wokugoqa noma okufakiwe kwe-Environment= ezingeni leyunithi esikhundleni sokukhishwa okuhlala emlandweni wetheminali yakho kuphela. Zombili izinguquko zibonakala endaweni ezungezile yenqubo, ngakho ukuqala kabusha ngokuvamile kukubuyisela ekuziphatheni kwakudala.

Qeda ngokuqinisekisa izinto ezine: izilungiselelo ezihlanganisiwe ze-URL yangasese azibonisi proxy, isitifiketi siqinisekiswa ngokumelene ne-CA ehlosiwe, isicelo sibuyisela isimo osilindele, futhi ushintsho lwenziwe endaweni engaphindwa. Umbhalo oluhlaza onendawo ezungezile engachazwanga ukulungisa okuyophinde kugcine kumshini olandelayo. Imiyalo ekule ncwadi yokuhola yiyo okufanele uyinamathisele kuthikithi.

Izihloko ezihlobene