机器人抓新浪博客

新浪的博客有点怪,就用户机制说,新浪博客更真实的用户应该是UID,而不是用户名。因此,每次打开链接,http://blog.sina.com.cn/username

实际上会先请求出uid,而用uid进行后面的访问。比如列表页 http://blog.sina.com.cn/sns/service.php?m=feeds&uid={0}&page=1    {0}的地方就是要用的uid。

而我用C#模拟请求也一直抓不对,同样的链接居然和浏览器看到的源代码不一样。实验发现设置

UserAgent = "Mozilla/4.0 (compatible;MSIE 6.0;Windows NT 5.2;SV1;Poco 0.31)";
UserAgent = "Mozilla/5.0+(compatible;+Googlebot/2.1;++http://www.google.com/bot.html)";

得到两个不一样的结果,看来新浪居然是做了检查http头的。

把UserAgent 设置为"Mozilla/4.0 (compatible;MSIE 6.0;Windows NT 5.2;SV1;Poco 0.31)";,也就是IE浏览器核心的头,可以请求到一个地址,但是该地址仍然后问题,内容是js,分析js后发现加载的实际页面是http://v35.blog.sina.com.cn/{0}.而在v35的页面中才可以找到uid的值,然后把uid代入http://blog.sina.com.cn/sns/service.php?m=feeds&uid={0}&page=1地址,最后在http://blog.sina.com.cn/sns/service.php?m=feeds&uid={0}&page=1地址中分析下一页和页面链接。

新浪搞得也太麻烦了......


birdshover
原文地址:https://www.cnblogs.com/birdshover/p/929013.html