封面先放个小姐姐。。。

去年底写的Instagram的爬虫,最近去爬图片,不好使了???只能获取首页的12张图片,后面的打死就下载不了。

然后就打开我Google开始搜啊搜啊,就搜到了一些信息,说是可能是Instagram的反扒机制,还能怎么办,,尝试一下咯。

结果,,,是真的。

整理一下记录下来。

反爬机制说明

x-instagram-gis:Instagram在request header中使用这个字段来进行反爬。

这里举个例子:

x-instagram-gis:b4e8bf56e344a42a09858789940ac031

字段我们知道了,但是这个字段的值是如何计算的呢。当然,我最开始也是不清楚了,大概是有爬虫大牛各种尝试或者瞄一眼猜到了吧,哈哈。

目前知道的这个值的算法如下:

x-instagram-gis = MD5(rhx_gis:variables)

为了验证这个公式是否正确,我们来实际验证一番:

  1. 获取rhx_gis
    可以在页面源码的<script type="text/javascript">window._sharedData中获取,如下:

  2. 获取variables
    这个可以通过chrome F12 然后查看Network中的XHR请求获取,如下:

分别取得这两个值组合为一个字符串

a93124d26f4cbe86a04de6299fbe4535:{"id":"7051181864","first":12,"after":"QVFCUDJoSXBqWkVteEE0NjBpbTdFenowaC1ac0I4NnAydWNCejBjRDdwemRGaFd2aWxfNTd0bXpIVWEyeFRWMzEyYUR4ZEhCYlBvU1ZOS0Z6U0J5SUs2Uw=="}

找一个在线MD5加密的网站计算,这里我使用的MD5加密,结果如下:

到这里我们可以跟上面那张图片里面的x-instagram-gis的字段值做对比了,看是不是一模一样。

好了,到这里基本上就又可以快乐的下图片、图片啦。

更新说明

2019.05.20 update

2019.05.16 Instagram 更新 rhx_gis字段消失,导致爬取失败

解决方案如下:
将rhx_gis字段设置为空值,目前可以正常下载。

2019.06.21 update

Instagram 又更新了,去掉了header 里面的x-instagram-gis。也就是说去掉了反爬虫机制,有毒。

解决方案如下:
去掉请求header里面的x-instagram-gis字段,按照最原始方式爬取。

最后修改:2019 年 06 月 21 日 02 : 27 PM