Proxy su moduliu „Prašymai“ Python

Tik trumpas, paprastas puikių Python prašymų pavyzdys.

Dokumentuose negaliu rasti, ką turėtų turėti kintamasis „prokurorai“. Kai atsiunsiu jam diktatą su standartine IP: PORT verte, jis jį atmeta, prašydamas 2 reikšmių. Taigi, manau (nes dokumentuose nemanoma), kad pirmoji vertė yra ip, o antrasis - uostas?

Dokumentuose minima tik:

proxy - (neprivaloma) proxy serverio URL žodyno žemėlapių sudarymo protokolas.

Taigi, aš bandžiau ... ką turėčiau daryti?

 proxy = { ip: port} 

ir ar turėčiau juos konvertuoti į tam tikrą tipą prieš juos diktuojant?

 r = requests.get(url,headers=headers,proxies=proxy) 
107
27 нояб. nustatyti vartotojo1064306 lapkritis 27 2011-11-27 20:50 '11, 20:50, 2011-11-27 20:50
@ 7 atsakymai

Sintaksės proxies '= {"protocol":"ip:port", ...} . Su juo galite nurodyti įvairius (arba tuos pačius) įgaliotuosius užklausoms, naudodami http, https ir ftp protokolus:

 http_proxy = "http://10.10.1.10:3128" https_proxy = "https://10.10.1.11:1080" ftp_proxy = "ftp://10.10.1.10:3128" proxyDict = { "http" : http_proxy, "https" : https_proxy, "ftp" : ftp_proxy } r = requests.get(url, headers=headers, proxies=proxyDict) 

Išvestos iš requests dokumentus :

Parametrai:
method - naujo užklausos objekto metodas.
url - naujo užklausos objekto URL.
...
proxies - (neprivaloma) Žodynas atitinka protokolą su tarpinio serverio URL .
...


„Linux“ taip pat galite tai padaryti naudodami HTTPS_PROXY FTP_PROXY ir FTP_PROXY aplinkos kintamuosius:

 export HTTP_PROXY=10.10.1.10:3128 export HTTPS_PROXY=10.10.1.11:1080 export FTP_PROXY=10.10.1.10:3128 

„Windows“ sistemoje:

 set http_proxy=10.10.1.10:3128 set https_proxy=10.10.1.11:1080 set ftp_proxy=10.10.1.10:3128 

Ačiū, Jay tai rodo:
Sintaksė pakeista naudojant 2.0.0 užklausas .
URL URL turėsite pridėti schemą: http://docs.python-requests.org/en/latest/user/advanced/#proxies

189
27 нояб. atsakymas pateikiamas choras 27 lapkričio. 2011-11-27 21:08 '11, 21:08, 2011-11-27 21:08

Radau, kad URL turi tikrai gerą kodą, kad galėtumėte paimti įgaliotojo serverio nustatymus, ir jie yra tinkamos formos naudoti tiesiogiai. Jį galite naudoti kaip:

 import urllib ... r = requests.get('http://example.org', proxies=urllib.getproxies()) 

Jis veikia labai gerai, ir „urllib“ žino apie „Mac OS X“ ir „Windows“ nustatymus.

21
01 мая '13 в 4:54 2013-05-01 04:54 atsakymą davė Ben Golding gegužės 13 d. 13 val. 4:54 2013-05-01 04:54

Priimtas atsakymas man buvo gera pradžia, bet aš vis dar gavau šią klaidą:

 AssertionError: Not supported proxy scheme None 

Pataisykite, kad proxy URL nurodytumėte http: //

 http_proxy = "http://194.62.145.248:8080" https_proxy = "https://194.62.145.248:8080" ftp_proxy = "10.10.1.10:3128" proxyDict = { "http" : http_proxy, "https" : https_proxy, "ftp" : ftp_proxy } 

Man būtų įdomu, kodėl originalūs kūriniai kai kuriems žmonėms, bet ne man.

Redaguoti: aš matau pagrindinį atsakymą, kuris dabar atnaujintas, kad atspindėtų tai :)

16
03 февр. Atsakymą pateikė Owen B 03 vasaris. 2014-02-03 17:28 '14 at 17:28 2014-02-03 17:28

Čia galite susipažinti su proxy dokumentais .

Jei reikia naudoti tarpinį serverį, galite konfigūruoti atskirus užklausas su prokuratūros argumentu bet kokiam užklausos metodui:

 import requests proxies = { "http": "10.10.1.10:3128", "https": "10.10.1.10:1080", } requests.get("http://example.org", proxies=proxies) 

Norėdami naudoti „HTTP Basic Auth“ naudodami tarpinį serverį, naudokite sintaksę http: // user: password@host.com/ :

 proxies = { "http": "http://user:pass@10.10.1.10:3128/" } 
16
15 нояб. Atsakymas pateikiamas Zhifeng Hu lapkričio 15 d. 2012-11-15 13:13 '12 13:13 2012-11-15 13:13

čia yra mano bazinė klasė python užklausos moduliui su kai kuriomis proxy konfigūracijomis ir chronometru!

 import requests import time class BaseCheck(): def __init__(self, url): self.http_proxy = "http://user:pw@proxy:8080" self.https_proxy = "http://user:pw@proxy:8080" self.ftp_proxy = "http://user:pw@proxy:8080" self.proxyDict = { "http" : self.http_proxy, "https" : self.https_proxy, "ftp" : self.ftp_proxy } self.url = url def makearr(tsteps): global stemps global steps stemps = {} for step in tsteps: stemps[step] = { 'start': 0, 'end': 0 } steps = tsteps makearr(['init','check']) def starttime(typ = ""): for stemp in stemps: if typ == "": stemps[stemp]['start'] = time.time() else: stemps[stemp][typ] = time.time() starttime() def __str__(self): return str(self.url) def getrequests(self): g=requests.get(self.url,proxies=self.proxyDict) print g.status_code print g.content print self.url stemps['init']['end'] = time.time() #print stemps['init']['end'] - stemps['init']['start'] x= stemps['init']['end'] - stemps['init']['start'] print x test=BaseCheck(url='http://google.com') test.getrequests() 
1
13 нояб. atsakymą pateikė mtt2p lapkričio 13 d 2012-11-13 17:30 „12 at 5:30 val. 2012-11-13 17:30

Jei norite palaikyti slapukus ir sesijos duomenis, tai geriausia tai padaryti:

 import requests proxies = { 'http': 'http://user:pass@10.10.1.0:3128', 'https': 'https://user:pass@10.10.1.0:3128', } # Create the session and set the proxies. s = requests.Session() s.proxies = proxies # Make the HTTP request through the session. r = s.get('http://www.showmemyip.com/') 
0
30 нояб. atsakymas suteiktas Vartotojas 30 Lap. 2018-11-30 21:16 '18, 21:16

Tai šiek tiek vėluojama, tačiau čia yra vyniojimo klasė, kuri leidžia lengviau proxy versti, o tada veikia „http POST“ arba „GET“:

ProxyRequests

 https://github.com/rootVIII/proxy_requests 
0
08 авг. atsakymą pateikė vartotojo10171509 08 rug . 2018-08-08 18:02 '18, 18:02 pm 2018-08-08 18:02

Kiti klausimai apie „ žymes arba „ Klauskite“