2017-10-17 1 views
0

ich folgendes zu tun versuche:Python: Wie kann ich urllib oder fordert Module aus einer Unternehmensdomäne (Firewall, Proxy, cntlm etc)

from urllib.request import urlopen 
data = urlopen("https://www.duolingo.com/users/SaifullahS6").read() 

bekomme ich folgende Fehlermeldung:

URLError: <urlopen error [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond> 

Und wenn ich versuche, dies:

import requests 
session = requests.Session() 
data = {"login": "SaifullahS6", "password": "mypassword"} 
req = requests.Request('POST', "https://www.duolingo.com/login", data=data,   
cookies=session.cookies) 
prepped=req.prepare() 
returned = session.send(prepped) 

ich:

ConnectionError: HTTPSConnectionPool(host='www.duolingo.com', port=443): Max retries exceeded with url: /login (Caused by NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x000000000E6948D0>: Failed to establish a new connection: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond',)) 

Ich bin mir nicht sicher, wie ich Einzelheiten meiner Internetverbindung angeben soll.

  • Ich bin bei der Arbeit und ich weiß, wir haben einen Corporate Proxy.
  • Wir haben Windows Firewall eingeschaltet, aber ich habe überprüft, dass Python und Python in der Spalte "Domain" der Systemsteuerung markiert sind, um ein Programm durch die Firewall zu ermöglichen.
  • Wenn ich google.co.uk von einer Befehls-Shell aus anpinge, haben alle vier Anfragen eine Zeitüberschreitung, aber ich kann von einem Browser darauf zugreifen.
  • In der Systemsteuerung Internetoptionen, ich klicke auf die Registerkarte Verbindungen und dann LAN-Einstellungen, und ich habe "Automatisch Einstellungen erkennen" eingeschaltet, und auch "Verwenden Sie einen Proxy-Server für Ihr LAN", "Adresse" ist "localhost "und" Port "ist 3128. Dies ist cntlm. Ich habe es einmal eingerichtet, um Python-Pakete herunterzuladen, und es scheint immer noch aktiv zu sein, weil ich gerade eines meiner Pakete aktualisiert habe.

Ich brauche nicht einmal eine direkte Antwort auf meine Frage; An dieser Stelle werde ich mich mit Klarheit darüber einigen, was eigentlich hinter den Kulissen vor sich geht. Jede Hilfe sehr geschätzt!

Antwort

0

Für den ersten Fall, der oben (urllib Modul), I löste es durch die folgenden Zeilen vor der data = urlopen(...).read() Linie Einsetzen:

proxies = { "http": "localhost:3128", 
      "https": "localhost:3128"} 
proxy = urllib.request.ProxyHandler(proxies) 
opener = urllib.request.build_opener(proxy) 
urllib.request.install_opener(opener) 

Für den zweiten Fall (Requests Modul), alles war die gleiche, außer den letzten Leitung:

proxies = { "http": "localhost:3128", 
      "https": "localhost:3128"} 
returned = session.send(prepped, proxies=proxies) 

Hope this Notiz hilft anderen, die über diese Seite kommen.

Verwandte Themen