Paggamit ng proxy IP sa Python Requests
Magtakda ng malinaw na proxy route para sa bawat Requests request, piliin ang tamang endpoint scheme at hawakan ang timeout at HTTPS tunnel failure.
Kapag available ang Requests sa proyekto, ipasa ang proxy mapping sa tawag:
import requests
proxies = {
"http": "http://127.0.0.1:8080",
"https": "http://127.0.0.1:8080",
}
response = requests.get(
"https://example.com/",
proxies=proxies,
timeout=(5, 15),
)
response.raise_for_status()
print(response.status_code)
Palitan ang loopback endpoint ng tumatakbo mong proxy o kandidato mula sa listahan ng mga HTTP proxy na susubukan gamit ang request na ito. Ang mga key ay para sa scheme ng destinasyon: http para sa HTTP URL at https para sa HTTPS URL. Ang mga value ay para sa proxy listener. Puwedeng magkaiba ang endpoint kung kailangan ng network ng hiwalay na ruta.
Sinasadya ang proxy value na http:// sa ilalim ng key na https. Humihingi ang Requests ng CONNECT tunnel sa HTTP listener at saka nagtatatag ng TLS sa destinasyon sa loob nito, ayon sa patakaran ng proxy sa destinasyon at port. Ang pagpapalit sa https:// ay humihingi ng TLS sa mismong proxy; maaari itong mabigo kung plain HTTP ang inaasahan ng listener.
Kahulugan ng dalawang timeout number
Nagtatakda ang timeout=(5, 15) ng connection at read timeout. Hindi ito nagtatakda ng kabuuang labinlimang segundong deadline. Ang pana-panahong pumapasok na data, maraming address at connection attempt ay maaaring magpahaba sa oras. Walang pangkalahatang timeout na ibinibigay ang Requests kapag hindi ito itinakda. Pumili ng angkop na limitasyon sa tugon at magdagdag ng application-level deadline kung kailangan ng trabaho ng mahigpit na kabuuang oras.
Hawakan ang kabiguan sa yugtong pinangyarihan
try:
response = requests.get(
"https://example.com/",
proxies=proxies,
timeout=(5, 15),
)
response.raise_for_status()
except requests.exceptions.ProxyError as error:
print("Proxy setup failed:", type(error).__name__)
except requests.exceptions.Timeout:
print("A configured timeout expired")
except requests.exceptions.HTTPError as error:
print("HTTP status:", error.response.status_code)
Ang tinanggihang CONNECT ay maaaring magdulot ng ProxyError bago pa magkaroon ng tugon mula sa destinasyon. Ang HTTPError branch ay sumusunod sa natanggap na tugon na may error status; ang Timeout ay nangangahulugang naubos ang itinakdang limitasyon. Suriin ang setup exception chains nang lokal at alisin ang endpoint na may credential at pribadong URL bago ibahagi.
Panatilihing aktibo ang certificate verification. Kung may private CA o managed interception ang awtorisadong network, ibigay ang inaasahang trust material sa halip na patayin ang verification.
Kinokontrol ng tahasang per-request entry ang rutang ibinigay rito, ngunit ang scheme na hindi kasama ay maaari pa ring maapektuhan ng environment proxy discovery. Kapag inililipat ang tawag sa reusable Session, magpasya kung paano mag-uugnayan ang environment variables, Session defaults at per-request overrides; magkaibang pagpili ang connection reuse at routing policy.