尽管是Proxymesh,但网站阻止了Ec2的请求

时间:2018-06-02 20:27:02

标签: python amazon-ec2 http-proxy scrapy-splash

我正在使用scrapy和scrapy_splash来抓取文本数据并从一系列网站上截取png截图。根据最佳实践,我使用的是Proxymesh,即旋转IP服务。我的项目正在我的本地机器上工作,但是当我部署到Ec2实例蜘蛛时,我的两个网站被完全阻止了。

经过一番调查后,我意识到从我的实例卷曲这些网站也失败了,所以很可能这两个网站阻止了来自AWS IP地址的所有请求。但后来我记得我正在使用Proxymesh服务来发出本地机器的请求。

我理解为什么网站会阻止所有AWS IP地址,但为什么我通过Proxymesh传递请求时仍然遇到问题?我是否需要将请求传递给VPN然后再传递给Proxymesh?我如何在我的scrapy_splash项目中实现它?

来自scrapy的所有请求都通过http代理环境变量传递给Proxymesh:

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})

0 个答案:

没有答案