Wie kann ich einen SOCKS 4/5-Proxy mit urllib2 verwenden?

Lesezeit: 2 Minuten

Wie kann ich einen SOCKS 4/5-Proxy mit urllib2 verwenden, um eine Webseite herunterzuladen?

  • Verwandte für Tor: stackoverflow.com/questions/1096379/…

    – Ciro Santilli 新疆再教育营六四事件法轮功郝海东

    28. Dezember 15 um 12:41 Uhr

Wie kann ich einen SOCKS 45 Proxy mit urllib2 verwenden
panweizeng

Sie können verwenden SockeniPy Modul. Kopieren Sie einfach die Datei „socks.py“ in das lib/site-packages-Verzeichnis Ihres Pythons, und Sie können loslegen.

Sie müssen verwenden Socken vor urllib2. (Versuch es pip install PySocks )

Beispielsweise:

import socks
import socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 8080)
socket.socket = socks.socksocket
import urllib2
print urllib2.urlopen('http://www.google.com').read()

Sie können auch pycurl lib und tsocks ausprobieren, für weitere Details klicken Sie auf Hier.

  • Ein Problem dabei ist: Die DNS-Suche von urllib scheint nicht über den Proxy zu gehen. (auch mit rdns-Option und SOCKS4-Typ)

    – ABl

    28. Februar 11 um 22:43 Uhr

  • Ich möchte nur darauf hinweisen, dass sockipy auf Sourceforge einige böse Fehler hat. Verwenden Sie mindestens den Fork hier: code.google.com/p/socksipy-branch Da das Projekt meiner Meinung nach verlassen zu sein scheint, sollte jemand diesen Zweig übernehmen, den Namen ändern und einen Blogpost schreiben, damit die Leute diesen Buggy nicht weiter verwenden (und imo nicht wunderbar geschrieben) lib.

    – tmc

    24. Dezember 11 um 2:05 Uhr


  • Ich weiß, das ist alt, aber was ist falsch an der ursprünglichen Sockipy? Welche Bugs hat es?

    – paulm

    4. November 13 um 22:52 Uhr

  • Kann Socksipy nicht mehr über deinen Link herunterladen.

    – Loïc

    27. Februar 14 um 23:24 Uhr

  • @OJW Hier gibt es eine weitere Antwort stackoverflow.com/a/13214222/288875, die auch die Suche nach Hostnamen über den SOCKS-Proxy führt

    – André Holzner

    21. Mai ’15 um 21:41 Uhr

Hinzufügen einer Alternative zur Antwort von Pan, wenn Sie viele verschiedene Proxys gleichzeitig verwenden müssen.

In diesem Fall müssen Sie einen Opener erstellen, wie Sie es mit einem http-Proxy tun. Auf GitHub ist ein Code verfügbar https://gist.github.com/869791

opener = urllib2.build_opener(SocksiPyHandler(socks.PROXY_TYPE_SOCKS4, 'localhost', 9999))
print opener.open('http://www.whatismyip.com/automation/n09230945.asp').read()

  • Hey, ich habe den Code von github verwendet. Leider funktioniert die Authentifizierung nicht. Ich habe in der Datei socksipyhandler.py den richtigen Benutzernamen und das richtige Passwort eingegeben, erhalte jedoch einen Fehler (3, „unbekannter Benutzername oder ungültiges Passwort“). Ich kann bestätigen, dass mein Benutzername-Passwort funktioniert, da mein cURL-Befehl mit denselben Anmeldeinformationen funktioniert.

    – harschal.c

    23. November 15 um 16:27 Uhr

  • Macht nichts, habe das Problem herausgefunden, es gab einen Tippfehler in socks.py =), übrigens, großartige Arbeit. Danke vielmals!

    – harschal.c

    23. November 15 um 16:29 Uhr

Da SOCKS ein Socket-Level-Proxy ist, müssen Sie das verwendete Socket-Objekt durch ersetzen urllib2. Bitte werfen Sie einen Blick auf a Dies Lösung. Wenn Affen-Patching für Sie nicht gut genug ist, können Sie versuchen, den Code aus dem abzuleiten oder zu kopieren und zu modifizieren urllib2 Standardbibliothek.

.

673610cookie-checkWie kann ich einen SOCKS 4/5-Proxy mit urllib2 verwenden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy