Nur ein kurzes, einfaches über das hervorragende Requests Modul für Python.
Ich kann anscheinend in der Dokumentation nicht finden, was die Variable 'Stellvertreter' enthalten sollte. Wenn ich ihm ein Diktat mit einem Standardwert "IP: PORT" sende, lehnte er es ab und forderte 2 Werte . Ich schätze (da dies in den Dokumenten nicht so zu sein scheint), dass der erste Wert der ist ip und der zweite der Port?
Die Dokumente erwähnen dies nur:
proxies - (optional) Dictionary-Zuordnungsprotokoll zur URL des Proxys.
Also habe ich das versucht ... was soll ich tun?
proxy = { ip: port}
und sollte ich diese in einen Typ konvertieren, bevor sie in das Diktat eingefügt werden?
r = requests.get(url,headers=headers,proxies=proxy)
Die proxies
'-Dict-Syntax lautet {"protocol":"ip:port", ...}
. Damit können Sie verschiedene (oder dieselben) Proxies für Anforderungen angeben, die die Protokolle http, https und ftp verwenden:
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)
Abgeleitet von der requests
-Dokumentation :
Parameter:
method
- Methode für das neue Request-Objekt.url
- URL für das neue Request-Objekt.
...proxies
- (optional) Dictionary Zuordnungprotocol zur URL des Proxys.
...
Unter Linux können Sie dies auch über die Umgebungsvariablen HTTP_PROXY
, HTTPS_PROXY
und FTP_PROXY
tun:
export HTTP_PROXY=10.10.1.10:3128
export HTTPS_PROXY=10.10.1.11:1080
export FTP_PROXY=10.10.1.10:3128
Unter Windows:
set http_proxy=10.10.1.10:3128
set https_proxy=10.10.1.11:1080
set ftp_proxy=10.10.1.10:3128
Danke, Jay, dass du darauf hingewiesen hast:
Die Syntax wurde mit request 2.0.0 geändert.
Sie müssen der URL ein Schema hinzufügen: http://docs.python-requests.org/de/latest/user/advanced/#proxies
Ich habe herausgefunden, dass urllib wirklich guten Code hat, um die Proxy-Einstellungen des Systems zu übernehmen, und sie sind in der richtigen Form, um sie direkt zu verwenden. Sie können dies wie folgt verwenden:
import urllib
...
r = requests.get('http://example.org', proxies=urllib.getproxies())
Es funktioniert wirklich gut und urllib weiß auch, wie man Mac OS X- und Windows-Einstellungen erhält.
Die Dokumentation zu proxy finden Sie hier .
Wenn Sie einen Proxy verwenden müssen, können Sie einzelne Anforderungen mit dem Argument proxies für jede Anforderungsmethode konfigurieren:
import requests
proxies = {
"http": "10.10.1.10:3128",
"https": "10.10.1.10:1080",
}
requests.get("http://example.org", proxies=proxies)
Um HTTP Basic Auth mit Ihrem Proxy zu verwenden, verwenden Sie die http: // Benutzer: [email protected]/ -Syntax:
proxies = {
"http": "http://user:[email protected]:3128/"
}
Die akzeptierte Antwort war ein guter Anfang für mich, aber ich habe immer folgenden Fehler erhalten:
AssertionError: Not supported proxy scheme None
Fix dazu: http: // in der Proxy-URL angeben, also:
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
}
Mich würde interessieren, warum das Original für manche Menschen funktioniert, aber nicht für mich.
Edit: Ich sehe, dass die Hauptantwort jetzt aktualisiert wurde, um dies zu reflektieren :)
hier ist meine grundlegende Klasse in Python für das Anforderungsmodul mit einigen Proxy-Konfigurationen und Stoppuhr!
import requests
import time
class BaseCheck():
def __init__(self, url):
self.http_proxy = "http://user:[email protected]:8080"
self.https_proxy = "http://user:[email protected]:8080"
self.ftp_proxy = "http://user:[email protected]: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()
Wenn Sie Cookies und Sitzungsdaten persistieren möchten, tun Sie dies am besten so:
import requests
proxies = {
'http': 'http://user:[email protected]:3128',
'https': 'https://user:[email protected]: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/')
Es ist etwas spät, aber hier ist eine Wrapper-Klasse, die das Scraping von Proxys vereinfacht und dann ein http POST oder GET erstellt
ProxyRequests
https://github.com/rootVIII/proxy_requests
ich habe gerade einen Proxy-Graber erstellt und kann mich auch ohne Eingabe mit demselben Proxy-Proxy verbinden. Hier ist:
#Import Modules
from termcolor import colored
from Selenium import webdriver
import requests
import os
import sys
import time
#Proxy Grab
options = webdriver.ChromeOptions()
options.add_argument('headless')
driver = webdriver.Chrome(chrome_options=options)
driver.get("https://www.sslproxies.org/")
tbody = driver.find_element_by_tag_name("tbody")
cell = tbody.find_elements_by_tag_name("tr")
for column in cell:
column = column.text.split(" ")
print(colored(column[0]+":"+column[1],'yellow'))
driver.quit()
print("")
os.system('clear')
os.system('cls')
#Proxy Connection
print(colored('Getting Proxies from graber...','green'))
time.sleep(2)
os.system('clear')
os.system('cls')
proxy = {"http": "http://"+ column[0]+":"+column[1]}
url = 'https://mobile.facebook.com/login'
r = requests.get(url, proxies=proxy)
print("")
print(colored('Connecting using proxy' ,'green'))
print("")
sts = r.status_code