2016-08-15 5 views
0

Ich versuche, eine Verbindung zur Website mit Python-Anfragen, aber nicht mit meiner realen IP. So fand ich einen Proxy-Server im Internet und schrieb diesen Code:Python Requests Modul - Proxy funktioniert nicht

import requests 

proksi = { 
    'http': 'http://5.45.64.97:3128' 
} 

x = requests.get('http://www.whatsmybrowser.org/', proxies = proksi) 
print(x.text) 

Wenn ich Ausgang bekommen, Proxy einfach nicht funktionieren. Die Site gibt meine echte IP-Adresse zurück. Was habe ich falsch gemacht? Vielen Dank.

Antwort

0

Die Antwort ist ziemlich einfach. Obwohl es sich um einen Proxy-Service handelt, garantiert es keine hundertprozentige Anonymität. Wenn Sie die HTTP-GET-Anforderung über den Proxy-Server zu senden, die von Ihrem Programm die Anforderung an den Proxy-Server gesendet wird:

GET http://www.whatsmybrowser.org/ HTTP/1.1 
Host: www.whatsmybrowser.org 
Connection: keep-alive 
Accept-Encoding: gzip, deflate 
Accept: */* 
User-Agent: python-requests/2.10.0 

Nun, wenn der Proxy-Server diese Anforderung an den eigentlichen Bestimmungsort sendet, sendet er:

GET http://www.whatsmybrowser.org/ HTTP/1.1 
Host: www.whatsmybrowser.org 
Accept-Encoding: gzip, deflate 
Accept: */* 
User-Agent: python-requests/2.10.0 
Via: 1.1 naxserver (squid/3.1.8) 
X-Forwarded-For: 122.126.64.43 
Cache-Control: max-age=18000 
Connection: keep-alive 

Wie Sie sehen können, wirft es Ihre IP (in meinem Fall 122.126.64.43) im HTTP-Header: X-Forwarded-For und somit weiß die Webseite, dass der Antrag im Namen von 122.126.64.43

Lesen Sie mehr über diese h gesendet wurde EADER an: https://tools.ietf.org/html/rfc7239

Wenn Sie Ihren eigenen Squid-Proxy-Server hosten und X-Forwarded-For Header deaktivieren möchten Einstellung lesen: http://www.squid-cache.org/Doc/config/forwarded_for/