百姓网授权登陆网页的抓取研究

一般的不需要登陆的网页抓取:(C#)

using System;
using System.IO;
using System.Net;
using System.Text;

namespace CSharpTest0 {
    internal class Program {
        private static void Main(string[] args) {
            var request =
                (HttpWebRequest) WebRequest.Create("http://www.somehost.com/resourcePath");
            request.Method = "GET";
            HttpWebResponse response = null;
            StreamReader sr = null;
            try {
                response = (HttpWebResponse) request.GetResponse();
                sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                //do something
            }
            catch (Exception ex) {
                //do something
            }
            finally {
                sr.Close();
                response.Close();
            }
        }
    }
}
然而需要登陆后,才能获取的授权网络资源的抓取,要费一些周折。

一般在传统的httpRequest请求基础上,在附加网站自定义的cookie。注意是网站自定义的cookie,可能会有若干个。

下面以baixing.com为例讲述抓取授权页面的过程。

首先,我们需要使用HttpAnalyzer来分析数据流。

HttpAnalyzer软件ready后,清空浏览器的历史记录和已保存的密码。

打开浏览器,IE或者chrome都可以。输入要访问的URI。打开httpAnalyzer,开启http数据流抓取功能。再按回车键。

之所以没有在打开浏览器前打开一般打开浏览器前打开httpAnalyzer。是因为浏览器在启动时会链接到我们设定好了的HomePage,干扰数据流的分析。

好了,现在如果前述动作执行正确的话,浏览器应该进入登陆界面了,而不是我们需要的URI。

接着输入用户名密码,进行登陆。完成以后,关闭浏览器,进入httpAnalyzer界面,停止http数据流抓取。

好了现在分析httpAnalyzer抓取到的数据流。

我想要的资源URI :http://www.baixing.com/a/b/c。

首先,浏览器发出一个普通的上述httprequest,response是的code是302 NOT FOUND。response的header里Set-Cookie:__trackId=123456789012345。共15位,这是很重要的cookie,接下来的httprequest都会有用到 。response其他的header字段不重要,暂时忽略。

接下来,浏览器使用了刚获取的__trackId再次发送了一个httprequest,URL是/oz/login?&redirect=?http://www.baixing.com/a/b/c。

cookie有两个,一个是__trackId,还有一个就是_auth_redirect=http%3A%2F%2Fwww.baixing.com%2Fa%2Fb%2Fc%2F%2F。

对应的reponse会返回个cookie名称是__uuid。

然后,再次发送httprequest,这次是获取登录界面URL是/oz/login?&redirect=?http://www.baixing.com/a/b/c。

httprequest的cookie变了,变成三个了,除了__trackId和_auth_redirect外,还有个——uuid。

response的cookie会有个token,这个是在POST数据时,和用户名密码一起发给server的,是会话的一个标记。

接着,你输入的用户名密码,额,POST个httprequest。POST Data有用户名和密码以及token。

POST网页后拿到的Response的cookie会有名为:__t,__u,__c,__n,嗯,到此,我们拿到了所有的cookie。

加上之前的__trackId和__uuid。就能抓取到授权网页了。

需要源代码的,留下邮箱索取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值