Wie bekomme ich die IP-Adresse von einem http-request mit den Anforderungen der Bibliothek?
Ich bin das HTTP-Anforderungen über die Anforderungen der Bibliothek in python, aber ich brauche die ip Adresse von dem server aus, reagiert die http-Anfrage und ich versuche zu vermeiden, um zwei Anrufe (und möglicherweise auch unter einer anderen ip-Adresse, von der eine antwortete, dass Sie den Wunsch.
Ist das möglich? Macht die python-http-Bibliothek ermöglicht es mir, das zu tun?
ps: ich brauche auch HTTPS-Anfragen und die Verwendung eines authentifizierten proxy.
Update 1:
Beispiel:
import requests
proxies = {
"http": "http://user:[email protected]:3128",
"https": "http://user:[email protected]:1080",
}
response = requests.get("http://example.org", proxies=proxies)
response.ip # This doesn't exist, this is just an what I would like to do
dann würde ich gerne wissen, an welche IP-Adresse anfordert, verbunden von einer Methode oder Eigenschaft in der Antwort. In anderen Bibliotheken, die ich in der Lage war, durch das finden der Socke Objekt und der Verwendung der getpeername () - Methode.
InformationsquelleAutor der Frage gawry | 2014-03-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es stellt sich heraus, dass es ziemlich beteiligt.
Hier eine monkey-patch während der Verwendung
requests
version 1.2.3:Einwickeln der
_make_request
Methode aufHTTPConnectionPool
zum speichern der Antwort vonsocket.getpeername()
auf dieHTTPResponse
Instanz.Für mich auf python 2.7.3, diese Instanz auf
response.raw._original_response
.Ergibt:
Ah, wenn es ein proxy oder der Antwort ist, chunked, die
HTTPConnectionPool._make_request
ist nicht genannt.Hier also eine neue version patchen
httplib.getresponse
statt:Ausgeführt:
Ebenfalls geprüft, läuft mit Proxys; Proxyserver-Adresse zurückgegeben.
Update 2016/01/19
est bietet eine alternative, die nicht brauchen, die monkey-patch:
Update 2016/05/19
Ab in die Kommentare kopieren, die hier für die Sichtbarkeit, Richard Kenneth Niescior bietet die folgenden, das bestätigt die Arbeit mit Anforderungen 2.10.0 und Python 3.
InformationsquelleAutor der Antwort MattH