urllib3 સાથે પ્રોક્સી IP વાપરો
HTTP પ્રોક્સી માટે ProxyManager પસંદ કરો, urllib3ના જવાબના ખાના જુઓ અને ફરી પ્રયાસ તથા SOCKSના અલગ મેનેજરનો ખ્યાલ રાખો.
નાના urllib3 પ્રોક્સી નિદાન માટે ફરી પ્રયાસ બંધ રાખીને ProxyManager વાપરો. તે બંધ પડેલી નોંધ ફરીફરી અજમાવવામાં સમય વાપરવાને બદલે પહેલો પ્રયાસ બતાવે છે. uvથી સંચાલિત પ્રોજેક્ટમાં:
uv add urllib3દસ્તાવેજના એન્ડપોઇન્ટને તમારી સેવા કે HTTP પ્રોક્સીની યાદીના HTTP પ્રોક્સીથી બદલી એ મેનેજર દ્વારા વિનંતી કરો:
import urllib3
proxy = urllib3.ProxyManager(
"http://203.0.113.10:8080",
timeout=urllib3.Timeout(connect=5, read=10),
retries=False,
)
try:
response = proxy.request("GET", "https://example.com/")
print(response.status)
print(response.data.decode("utf-8", errors="replace")[:200])
finally:
proxy.clear()
પહેલાં response.status વાંચો, પછી response.data જુઓ. આ urllib3ના ખાના છે; Requestsના status_code અને text વિકલ્પ નથી. વેબસાઇટનો ઇનકાર કામ કરતી પ્રોક્સી દ્વારા આવી શકે. જવાબ પહેલાં અપવાદનો અર્થ વિનંતી પૂર્ણ ન થઈ તે છે.
retries=False નિદાનની પસંદગી છે, પ્રોડક્શનના ફરી પ્રયાસની નીતિ નહીં. જોડાણના 5 સેકન્ડ અને વાંચનના 10 સેકન્ડ પોતાની અવસ્થાને મર્યાદિત કરે છે; તે મળીને ખાતરીવાળી કુલ 15 સેકન્ડની સમયમર્યાદા નથી બનતી. DNS અને જવાબની પ્રગતિ કુલ રાહને અસર કરી શકે.
ઉદાહરણ બોડી અગાઉ લોડ કરે છે અને અંતે મેનેજરના પૂલ સાફ કરે છે. એ જ એન્ડપોઇન્ટથી પુનરાવર્તિત વિનંતી માટે કામ પૂરું થાય ત્યાં સુધી મેનેજર રાખો જેથી જોડાણ ફરી વાપરી શકાય. preload_content=False પર જવાથી જીવનચક્ર બદલાય છે: બોલાવનારને સ્ટ્રીમ થયેલો જવાબ વાંચી મુક્ત કરવો પડે.
સાંભળતી સેવા સાથે મેળ ખાતો મેનેજર પસંદ કરો. અન્યત્ર URL રાખવાથી સામાન્ય PoolManager પ્રોક્સી-સક્ષમ નથી બનતો; SOCKS urllib3.contrib.socks.SOCKSProxyManager અને તેની વૈકલ્પિક નિર્ભરતાઓ વાપરે છે. ઉપરનો કોડ HTTP ProxyManager માર્ગ અનુસરે છે.