2017-03-21 5 views
-1

Ich schrieb Code, um das Ergebnis von Google mit Proxies zu analysieren.Ich benutze Python3 aber habe Fehler oder 503 Service nicht verfügbar oder 403 Forbitten oder keine Verbindung.Python analysieren Google mit Proxy

Was mache ich falsch?

Mein Code:

header = "Mozilla/5.001 (windows; U; NT4.0; en-US; rv:1.0) Gecko/25250101" 
candidate_proxies = ['http://54.183.219.170:80'] 
for proxy in candidate_proxies: 
    print("Trying HTTP proxy %s" % proxy) 
    try: 
     proxy_support = urllib.request.ProxyHandler({'http' : proxy}) 
     request = urllib.request.Request(url) 
     request.add_header("User-Agent", header) 
     opener = urllib.request.build_opener(proxy_support) 
     urllib.request.install_opener(opener) 
     response = urllib.request.urlopen(request) 
     html = response.read() 
     print("Got URL using proxy %s" % proxy) 
     return html 
     #result = urllib.urlopen("http://www.google.com", proxies={'http': proxy}) 
     break 
    except urllib.error.HTTPError as e: 
     print("Error accessing:", url) 
     if e.code == 503 and 'CaptchaRedirect' in e.read(): 
      print("Google is requiring a Captcha. For more information see: 'https://support.google.com/websearch/answer/86640'") 
     print("Trying next proxy in 5 seconds") 
     time.sleep(5) 
    except Exception as e: 
     print("Error accessing:", url) 
     print(e) 
     return None 
return None 

Frage:

Warum ist mein Proxy google Erkennung und wie man es richtig machen?

+1

Offenbar ist 54.183.219.170 kein eigener Server, sondern ein offener öffentlicher Proxy, der im INTERNET gefunden wird. Was erwarten Sie dann? – georgexsh

+0

Ich probierte die https://github.com/constverum/ProxyBroker, um mir Proxies bereitzustellen, aber ich bekomme das gleiche Problem. Also, was ist der Unterschied zwischen diesen "Free" Proxies und jemand den ich von ProxyHub oder so kaufe? – SeeuD1

+0

Ihr Code funktioniert für mich mit: url = "* http * s: //google.com", so bekomme ich eine gültige Antwort .. – Zephro

Antwort

-2

Sie benötigen dedizierte Proxies, damit dies funktioniert. Sie finden zuverlässige Anbieter mit minimalem Aufwand.

Dann durchlaufen Sie die Proxies.

from itertools import cycle 
1

Sie berücksichtigen sollten, einen Dienst wie Proxicity.io mit (https://www.proxicity.io). Sie können nach Proxys suchen, die Google unterstützen, und Sie erhalten bei jeder API-Anfrage einen neuen verifizierten Proxy. Sie können den Service auch kostenlos nutzen! Eine der Funktionen des Dienstes ist es, den Proxy gegen gängige Hosts (Google, Amazon, Craigslist usw.) zu prüfen und gegen sie mit dem Feld supportedWebsites abzufragen.

Sie können ganz einfach eine neue, überprüft erhalten und getestet Proxy mit dem folgenden:

response = requests.get('https://api.proxicity.io/v2/<OPTIONAL-API-KEY>/proxy) 
proxy = response.json()['curl'] # curl returns protocol://ip:port format 

Full Disclosure: Ich bin der leitende Entwickler an diesem Projekt. Entwickelt für andere Entwickler. Ich möchte nicht wieder in Schwierigkeiten mit StackOverflow geraten, um diesen Service zu teilen.

+0

Wie viel Anfragen funktioniert Ihr Tool kostenlos? Ich kann keine Beschreibung über die Einschränkungen für die kostenlose Nutzung finden? – SeeuD1

+0

@ SeeuD1 Danke, dass du das rausrufst! Wir werden diese Informationen so schnell wie möglich für Sie hinzufügen! Für die kostenlosen API-Key-Anfragen erhalten Sie 50 Anfragen pro Tag. Ich habe daran gearbeitet, einige Aktionscodes für StackOverflow-Benutzer für die bezahlten Schlüssel hinzuzufügen! Sobald ich diese hochgehe, werde ich sicher sein, sie hier für Sie und andere zu verwenden! – cmeadows

+0

Ah yeah Ich finde es manuell durch Testen Ihrer API = p, aber ich bekomme keinen Proxy, der mit Google verwendbar ist. Es ist eine nette API, aber ich dachte, eine Anfrage für eine bestimmte Website würde viel helfen und Ihren Traffic reduzieren. – SeeuD1