Я использую scrapy и scrapy_splash для очистки текстовых данных и снятия скриншотов с нескольких веб-сайтов.В соответствии с лучшими практиками я использую Proxymesh, вращающийся IP-сервис.Мой проект работал на моей локальной машине, но когда я развернул на пауках экземпляра Ec2, два моих сайта были полностью заблокированы.
После некоторого расследования я понял, что отключить эти сайты из моего экземпляра также не удалось, поэтому вполне вероятно, что эти два сайта блокируют все запросы с IP-адресов AWS.Но потом я вспомнил, что использую сервис Proxymesh для выполнения запросов, которые работали с моей локальной машины.
Я понимаю, почему веб-сайты блокируют все IP-адреса AWS, но почему у меня все еще возникают проблемы при передаче запросов через Proxymesh?Нужно ли передавать запросы в VPN, а затем в Proxymesh?Как я могу реализовать это в моем проекте scrapy_splash?
Все запросы из scrapy передаются в Proxymesh через переменную среды http proxy:
export https_proxy=https://proxy:port
Splash получает прокси в аргументах, переданных запросу.
# Pass url to splash for screenshoting.
splash_args = {
'wait': 3.0,
'html': 1,
'png': 1,
'width': 600,
'render_all': 1,
'wait': 3.0,
'proxy':'http://<MYPROXYCREDS>:@proxy.crawlera.com:8010'
}
yield SplashRequest(response.url,
self.create_screenshot,
endpoint='render.json',
args=splash_args,
meta={'ip_address': ip_address,
'title': title,
'filename': filename,
'server': server})