【发布时间】:2020-06-10 19:58:20
【问题描述】:
我有一个由 heroku 托管的网络抓取应用程序。我总是在 heroku 上得到 403 错误,但是如果我在本地运行代码,页面可以正常工作。我认为这个错误是由于 Heroku 动态 IP 造成的。我安装了 Fixie,我希望蜘蛛从静态地址发送请求。怎么做?
蜘蛛:
yield scrapy.Request('https://www.ratemds.com/best-doctors/?specialty=%s' % specialty, callback=self.profile_link,
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36 OPR/60.0.3255.50747 OPRGX/60.0.3255.50747"},
meta={"proxy": "http://fixie:XkWpxhGyIgZq454@velodrome.usefixie.com:80"})
Heroku CLI:
E:\Python\heroku3>heroku config:get FIXIE_URL
http://fixie:XkWpxhGyIgZq454@velodrome.usefixie.com:80
【问题讨论】:
-
“我认为这个错误是由 Heroku 动态 ip 造成的”——是什么让你这么认为?更有可能是 Heroku / AWS block 可以使用的 IP。
-
我该如何解决这个问题?
-
我们仍然没有足够的信息来了解问题所在。如果它是我建议的 IP 范围,唯一的解决方案是在其他地方托管。但这可能无法解决问题:如果被抓取的站点正在阻止 Heroku / AWS 范围,那么它可能也阻止了大多数其他大型主机。