Ruby Instagram用户页面解析(带代理,不带API)

Ruby Instagram用户页面解析(带代理,不带API),ruby,parsing,proxy,instagram,Ruby,Parsing,Proxy,Instagram,我需要在没有API和代理的情况下解析instagram用户页面,我使用的代码如下 def客户端(选项={}) 法拉第,纽约https://www.instagram.com,ssl:{verify:false},请求:{timeout:10})do|conn| 连接请求:url\u编码 conn.proxy选项[:proxy] conn.adapter:net\u http 结束 结束 response=client.get('some_username/',proxy:URI('//111.1

我需要在没有API和代理的情况下解析instagram用户页面,我使用的代码如下

def客户端(选项={})
法拉第,纽约https://www.instagram.com,ssl:{verify:false},请求:{timeout:10})do|conn|
连接请求:url\u编码
conn.proxy选项[:proxy]
conn.adapter:net\u http
结束
结束
response=client.get('some_username/',proxy:URI('//111.111.111:8080'))
答复.状态#302
响应['location']#”https://www.instagram.com/accounts/login/"
但之前,就在几天前,上面的代码按预期工作,即返回200个状态和带有用户页面的正文。而且code
Faraday.get('https://www.instagram.com/some_username/)
不使用代理可以正常工作,即返回200个状态和带有用户页的正文。我也在其他客户机上尝试过同样的方法,结果也是一样的,没有代理就成功了,并用它重定向

客户端可能需要一些额外的特定配置来使用代理

更新


我不确定,但这看起来像是代理的问题,即instagram可能会以某种方式检测到购买/免费的代理,并重定向来自该代理的请求(我使用了购买的代理包),因为我尝试使用自己的代理,它可以正常工作。

instagram最近做了一些更改。他们很可能有一些特殊的人工智能或使用一些服务来检查您的IP地址,您使用的ISP,它属于Digitalocean、OVH等组织还是住宅组织,您向哪个端点发出了多少请求,您如何发出请求,您在其中使用了多少帐户,以及您更改它们的速度等等

现在,如果你达到了抓取instagram的极限,你将被重定向到
登录和Signuppage
(你可以在源代码中找到它)。请注意,在这一点上登录不起作用-instagram只会返回
429错误代码
,这意味着请求太多。而且,在每次这样的阻塞之后,您的IP地址很可能更加不可靠,因此,如果您在阻塞之后再次开始刮取,它将更快地被阻塞

我想最简单的方法就是使用住宅ip,请求之间有足够高的延迟-比如3-5秒,如果你可以使用真实的帐户,并且不要过度使用它们,那么最好同时尝试提出任何其他请求,比如获得一些帖子、打开一篇帖子或其他什么


你可以忽略谷歌上几乎所有可用的免费IP代理列表,其中99%的IP被禁止,与Digitalocean、OVH等的IP几乎相同,许多IP也被阻止。

现在可能是重新阅读Instagram的好时机。我在尝试使用Selenium创建Instagram爬虫程序时遇到了同样的问题,但我通过使用专用代理解决了这个问题。您可以使用专用代理或旋转代理来抓取Instagram的内容,而无需登录。如果您必须登录才能获取所需的某些内容,我建议您使用专用代理。我建议你使用代理来降低价格和稳定价格。得到了完全相同的问题,经过了相当长的调查,得出了非常相似的结论。问题是:公司如何喜欢仍然废弃的内容?据我所知,API不允许你下载除self以外的个人资料。我猜他们只是有许多添加了许多电话号码的假帐户,一些自动化来解决任何挑战,使用许多提供商提供的许多住宅ip等。我想这是可能的。