2015-05-18 2 views
0

Я пытаюсь определить прокси-серверы с высокой анонимностью. Также называются частные/элитные прокси. Из форума я прочитал это:Как проверить заголовки прокси для проверки анонимности?

High Анонимность серверы не посылают HTTP_X_FORWARDED_FOR, HTTP_VIA и HTTP_PROXY_CONNECTION переменные. Хост даже не знает, что вы используете прокси-сервер , и, конечно же, он не знает вашего IP-адреса.

Очень анонимный прокси-сервер будет отображать следующую информацию:

REMOTE_ADDR = IP-адрес прокси-сервера

HTTP_VIA = пустой

HTTP_X_FORWARDED_FOR = пустой

Итак, как я могу проверить это заголовки в Python, чтобы отбросить их как прокси-сервер HA? Я попытался получить заголовки для 20-30 прокси, используя пакет requests, также с urllib, со встроенным http.client, с urllib2. Но я не видел этих заголовков, никогда. Так что я должен делать что-то неправильно ...

Это код, который я использовал для тестирования с requests:

proxies = {'http': 'http://176.100.108.214:3128'} 
header = {'user-agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.360',} 
s = requests.session() 
s.proxies = proxies 
r = s.get('http://www.python.org', headers=header) 
print(r.status_code) 
print(r.request.headers) 
print(r.headers) 

ответ

0

Это походит на пост форума вы имеете в виду говорит о заголовках видно на сервере на ваш проксированный запрос, а не на заголовки, видимые клиентом на прокси-ответ.

Поскольку вы тестируете www.python.org как сервер, единственный способ увидеть получаемые заголовки - получить доступ к своим журналам. Который у вас нет.

Но есть простое решение: запустите свой собственный HTTP-сервер, сделайте запросы на него, а затем вы увидите, что он получает. (Если вы находитесь за брандмауэром или NAT, с которым прокси-сервер, с которым вы тестируете, не сможет подключиться, вам может потребоваться получить бесплатный хостинг-сервер, а если нет, вы можете просто запустить его на своей машине.)

Если вы не знаете, как настроить и настроить веб-сервер, Python поставляется с одним из своих. Просто запустите этот сценарий с Python 3.2+ (на вашей собственной машине, или свободный экземпляр Amazon EC2 или любой другой):

from http.server import HTTPServer, SimpleHTTPRequestHandler 

class HeaderDumper(SimpleHTTPRequestHandler): 
    def do_GET(self): 
     try: 
      return super().do_GET() 
     finally: 
      print(self.headers) 

server = HTTPServer(("", 8123), HeaderDumper) 
server.serve_forever() 

Затем запустить этот скрипт с python3 в оболочке.

Затем запустите свой клиентский скрипт с http://my.host.ip вместо http://www.python.org и посмотрите, что сценарий выгружает на сервер.

+0

Хорошо, я понял, клиент/сервер трюк. И я помню $ _SERVER [] PHP var (lol). Но тот сервер, который вы написали, будет постоянно прослушивать новый запрос на получение. На 127.0.0.1:8123 я думаю. Это то, что делает HeaderDumper(), правильно? – Jeflopo

+0

@ JesúsFlores: Ну, он слушает «0.0.0.0: 8123', а не только« 127.0.0.1: 8123', поэтому прокси-сервер может подключиться к нему (при условии, что он находится на доступном IP-адресе). Но в остальном, да, это сервер, который вечно слушает новые запросы на получение (и отвечает на список каталогов его текущего каталога) и, кроме того, печатает обычные «127.0.0.1 - - [17/May/2015 17: 49:49] «GET/HTTP/1.1» 200 -' строка журнала на терминал, он также распечатывает все заголовки, которые он видит. – abarnert

+0

Удивительный! : D Спасибо за обмен знаниями. – Jeflopo

Смежные вопросы