抓取新榜微信公众号账号

新榜对微信公众号的统计报表数据还是有一定参考意义的,上榜的公众号的文章质量比较高

http://www.newrank.cn/public/info/list.html?period=month&type=data

新榜PC端站点对报表的数据有一定的加密反爬措施

image

JS肯定能解析出来加密的规则,不过我们只想一次性拿到账号列表,这么个简单需求就没必要去破解加密算法了。

利用中间人思路直接拿到结果更简单。

配置好mitmproxy,写好脚本:

 

import os
import json
PATH = lambda p: os.path.abspath(os.path.join(os.path.dirname(__file__), p))

def response(flow):
    if flow.request.pretty_url.startswith(“http://www.newrank.cn/xdnphb/list/”):
        with open(PATH(“newrank.tmp”), “a”) as fout:
            obj = json.loads(flow.response.content)[“value”]
            for x in obj:
                fout.write(“{media_id},{biz}\n”.format(
                    media_id=x[“account”],
                    biz=x[“biz_info”]
                ))
    pass

 

image

启动mitmproxy,加载自定义python处理。

 

mitmdump –host –insecure -p 1080 -s “newrank.py”

 

遇到新榜的数据请求,即解析并写入临时文件newrank.tmp。

现在把浏览器的代理切换为mitmproxy的代理地址,即可拿到新榜数据。

请求一共24种,不用挨个点击,来个JS批量模拟点击事件即可。

 

var els = document.querySelectorAll(‘#day_zixun_links>a, #day_life_links>a’);
for (var i = 0; i < els.length; i++) { els[i].click(); }

 

image

 

因为脚本写的简单,可能会有重复的数据,shell简单处理下就可以用了。

 

[@zw_93_11 /tmp/PDxIwvMc]# cat newrank.tmp | head
rmrbwx,MjM5MjAxNDM4MA==
cctvnewscenter,MTI0MDU3NDYwMQ==
zhanhao668,MzA5OTA0NDIyMQ==
people_rmw,MjM5NzI3NDg4MA==
ckxxwx,MjM5MzA0MTg2MA==
guanchacn,MjM5MjA4MjA4MA==
tiexuejunshi,MjM5NTA0Mjk0MA==
hqsbwx,MjM5MDk1NzQzMQ==
yehang82898289,MjM5OTgxMjA4MA==
fgzadmin,MzA5OTQyMDgyOQ==
[@zw_93_11 /tmp/PDxIwvMc]# cat newrank.tmp | wc -l
14109
[@zw_93_11 /tmp/PDxIwvMc]# sort -u newrank.tmp > tmp.txt
[@zw_93_11 /tmp/PDxIwvMc]# cat tmp.txt | head
a529597,MjM5MDE0NTMzMg==
A91160,MjM5MDAwMjgwMA==
aaaaggm,MzAxOTAyMDc5Mg==
aabb936,MzI5OTA0NjYzOA==
AAzyys,MzA4MDE2NjYxMg==
abcweiketang,MjM5MTc5NDY1OQ==
Abnormal_human,MjM5MzAxODg4MA==
ACFM1039,MjM5NjcwOTY3Nw==
AD4Aworld,MzAwMDY5MTYzNw==
addogking,MzAxNDMwMjQ5Ng==
[@zw_93_11 /tmp/PDxIwvMc]# cat tmp.txt | wc -l
2743

 

image

 

原创文章,转载请注明作者及来源。

About 智足者富

http://chenpeng.info

发表评论

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>