失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Python爬虫:爬取instagram 破解js加密参数

Python爬虫:爬取instagram 破解js加密参数

时间:2023-07-17 23:17:27

相关推荐

Python爬虫:爬取instagram 破解js加密参数

Python爬虫:爬取instagram,破解js加密参数

instagram 是国外非常流行的一款社交网站,类似的还有像facebook、twitter,这些社交网站对于掌握时事热点、电商数据来源和竞争对手的动态信息的把我都是很有数据价值的,所以值钱的数据谁都想获取,那就意味着谁都想保护,那么下面就来聊一聊怎么爬取ins的信息。

一、需求分析:

爬取instagram这个用户的图片、评论数、点赞数、文章内容,存为Json格式

二、站点分析:

首先自行准备翻墙工具,准备好以后,打开instagram官方账号,同时按下F12,如下所示:

切换到network选项,随便选择一张图片的url,全局搜索,如下图:

可以发现:instagram把数据写到了script标签里面,这是一种常见的做法,放到js里面去加载,所以我们需要用到正则表达式去做匹配:

解释一下:首先爬取首页的数据,然后正则表达式匹配script标签传来的后台数据,转换成json格式,同时还需要找出user_id和GIS_rhx_gis参数(破解js加密需要用到),最后解析数据。

爬取完首页以后,我们就要爬取下一页的数据了,可以发现下一页的数据是ajax异步加载的方式,返回的是json格式的数据,如下图:

请求的url格式为:

"/graphql/query/?query_hash=5b0222df65d7f6659c9b82246780caa7&variables=%7B\"id\"%3A\"{id}\"%2C\"first\"%3A12%2C\"after\"%3A\"{end_cursor}\"%7D"

复制代码

经过我测试,发现必须要带上 x-instagram-gis这个参数,否则会报 403 forbideen错误,这是ins的反爬虫机制:

那么如何生成这个参数呢?全局搜索,找到这个参数的js文件,复制一份拷贝到本地,我用的是Pycharm,一路追踪过去,可以找到生成这个参数的方法,我总结为:

1. 从用户首页/instagram/获取user_id、rhx_gis、end_cursor参数

2. variables = '{"id":"' + id + '","first":12,"after":"' + end_cursor + '"}',对 params = rhx_gis + ":" + variables进行md5加密

3. headers加入"x-instagram-gis": params,即可进行抓取

复制代码

生成这个参数以后,我们就可以下一页的抓取了~

三、源码:

/Mrrrrr10/In…

如果觉得《Python爬虫:爬取instagram 破解js加密参数》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。