一站式网站建设专家

十五年定制化网站建设经验.我们只做有价值的网站

互联网经验

15+

服务客户

2600+

专业团队

30+

如何处理Cookie验证

发布时间:2018-03-08 00:00 发布作者:admin 阅读:59

 

在做Web数据抓取时,有时会碰到一些页面进行了Cookie验证,爬虫拿不到准确的页面。

 

在起头之前,先先容一个利器:火狐的抓包插件-Live HTTP headers

若何安装Live HTTP headers(假定你已安装Firefox了)?

火狐东西栏:东西,附加组件,获得附件组件标签,搜刮”Live HTTP headers“,找到后点击”安装“,安装成功后会提醒重启Firefox,重启后插件安装终了。

若何启动Live HTTP headers?

火狐东西栏:东西,点击菜单中的Live HTTP headers,界面以下图所示。

 

当我们在Firefox中打开新的链接或页面JS与办事器进行了交互(Ajax)后,在Live HTTP headers中就会显示出阅读器发出的要求报文和办事器的应对报文,以下图所示。

 
若是想暂停抓取(好比,已呈现我们感乐趣的报文时),往失落Capture前的勾便可。
点击Clear按钮可以断根失落列表中的数据。
 
若何从头发送某个HTTP要求?
选中该要求,然后点击Replay按钮,会呈现一个HTTP要求编纂窗口,以下图所示。
 
 
在这里我们可以对要求的数据进行肆意的点窜,点击Replay按钮当前的要求报文就会被从头发送。办事器的响应会呈现在当前阅读器的勾当标签页上。
 
Live HTTP headers的先容就到这里,下面起头正题。
 
 
 
 
例如,http://www.groupon.com/huntsville/ 这个页面(一个团购站),爬虫直接爬取始终得不到准确的数据。
 
我们初度拜候的时辰,会呈现一个确认提醒窗口(我们要抓取的是一个团购页面,不是此刻显示的页面),以下图所示。
 
 
 
我们用Live HTTP headers来摹拟这个要求(以下图所示),办事器应对不异的页面。
 
 
 
 
当我们点击页面中的Continue按钮、输进电子邮箱肯定后,就看到了准确的页面(以下图所示)了。
 
 
这时候我们再从头输进http://www.groupon.com/huntsville/,呈现的仍是上面的准确页面(没有再次呈现确认页面)。
 
按照经验可以判定这个网站检测了Cookie:
第一次拜候的时辰它在Cookie中没有检测到某个标识表记标帜,所以它重定向到一个确认页面。
当我们点击Continue并输进邮箱确认后,它在Cookie中设置了这标识表记标帜,所以当第二次拜候http://www.groupon.com/huntsville/时没有呈现确认页面而是直接显示了方针页面。
 
是以,若是我们的爬虫直接往爬取http://www.groupon.com/huntsville/,获得的将是确认页的HTML,没法收集的准确的信息。
 
 
刷新当前页面,并用Live HTTP headers捕捉发出的报文,以下图所示。
 
 
可以看到此次的HTTP要求头与前次比拟多了Cookie字段。 我们再次提交该要求,发现阅读器显示的仍是准确的页面。
 
将Cookie字段删除(以下图所示)从头提交,确认页面又呈现了。
 
 
 

看来,玄机就躲于Cookie中了。

Cookie: adchemy_id=; division=huntsville; b=d9c83b52-4d41-11e0-acfb-0050569540c9; s=d9c84a48-4d41-11e0-acfb-0050569540c9; visited=true; _thepoint=ee1f3ef0522d06f05c475a21b4efc9d6; __utma=44473723.477787770.1300000481.1300000481.1300000481.1; __utmb=44473723.13.8.1300000750575; __utmc=44473723; __utmz=44473723.1300000481.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _chartbeat2=5zbqenbjyupzen6c; __utmv=44473723.|2=Exp-deal_page_030311=price_for_value%2F0=1,

 

一种守旧的做法就是在我们爬虫的要求头中插手上面的Cookie字段,如许必定是没有题目的。可是这里面有良多的冗余数据可以往失落,留下标识表记标帜参数便可。

若何肯定标识表记标帜参数呢?

我们可以将上面的Cookie参数挨个放进进行测试,直到返回正常页面为止。

一般来讲,参数的名称都是成心义的,是以我们可以按照名称猜想,好比本例中 visited=true; 这个参数的可能性是最大的,是以我们可以先测试这个参数(以下图所示)。

 

 

颠末测试发现,这个标识表记标帜参数恰是 visited=true;。 知道这个后,我们在爬虫中插手这个参数就可以抓到准确的页面了。

 

相关资讯