Scrapy изменить / обновить публичный IP через прокси - PullRequest
0 голосов
/ 04 декабря 2018

Я использую Scrapy для сканирования Google и хочу изменить свой IP-адрес с кода.Я получаю тот же общедоступный IP-адрес, что и мой локальный из вывода, хотя прокси в мета-ответе меняется.Если я иду к этой виртуальной машине и получаю ответ от этого сайта, он показывает мне IP-адрес виртуальной машины, который я использую в request.meta['proxy'] = ip, но из кода он показывает только локальный публичный IP

Это мой код.

middleware.py

class ProxyMiddleware(object):
def process_request(self, request, spider):
    encoded_user_pass = base64.encodestring(('%s:%s' % (username, pass)).encode()).decode().replace('\n', '').strip()
    request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass
    request.meta['proxy'] = ip

settings.py

DOWNLOADER_MIDDLEWARES = {
    'tutorial.middlewares.RotateUserAgentMiddleware': 400,
    'tutorial.middlewares.ProxyMiddleware': 100,
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110,
}

spider1.py

 request = scrapy.Request(url='http://checkip.dyndns.org/', callback=self.check_ip)

 def check_ip(self, response):
    print(response.meta)
    pub_ip = response.xpath('//body/text()').re('\d+\.\d+\.\d+\.\d+')[0]
    print("My public IP is: " + pub_ip)

Вывод:

{'proxy': 'http://51.162.81.60', 'download_timeout': 360.0, 'download_slot': 'checkip.dyndns.org', 'download_latency': 19.054762840270996}
My public IP is: 118.110.179.234

1 Ответ

0 голосов
/ 04 декабря 2018

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

Также на всякий случай упомяните схему (http, https) и порт.Не уверен, что Scrapy возвращается к любому значению по умолчанию, если схема и порт не упомянуты.

Также см. Документацию .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...