php爬虫教程(三)规则分析

原创 2016年08月30日 15:52:48

像我之前说的例子就是很简单的抓取例子,当热也有的平台为了防止爬虫抓取数据很做一些请求的验证。

这就需要你对请求头返回头cookie有一定的了解,包括模拟登陆,其实就是在请求的时候记住了cookie,通过cookie就能找到session就可以保持住登录的状态。

先放一下demo:

首先通过分析请求数据我发现 在请求餐厅列表的时候会多出来很多cookie,

而这些cookie的写入地址通过多次的抓包分析都获取过来了

所以我们完全模拟它们的规则去生成正确的cookie

  $client = new client();
  $client->debug(0);
  $client->setCookie('REMOVE_ACT_ALERT',1);//写入第一次cookie验证
  $client->get('http://waimai.xxxx.com/removeActAlert?requestUrl=http%3A%2F%2Fwaimai.meituan.com%2Fhome%2Fwx4gd6wer338');
  $a = $client->getCookies();
  $client->setCookies($a);//写入第二层
  $res = $client->get('http://waimai.xxxx.com/home/'.$k);
  $a = $client->getCookies();
  $client->setCookies($a);//写入第三层

  foreach($arr2 as $kk=>$vv) {
    $page_offset = 1;  // 控制分页
    for ($page = 1; $page <= 20; $page++) {
      $page_offset += 20; // 分页 +20

      $arr = array(
          'classify_type' => $vv,//type
          'sort_type' => '0',
          'price_type' => '0',
          'support_online_pay' => '0',
          'support_invoice' => '0',
          'support_logistic' => '0',
          'page_offset' => $page_offset,//控制分页的参数
          'page_size' => '20'
      );  // 拼接好post需要的数据
      $res = $client->post('http://waimai.xxxx.com/ajax/poilist', $arr);//请求餐厅数据
      $max = json_decode($res, true); // 转化数组

      for ($i = 0; $i < 20; $i++)  // 整理数据

总结:其实无论是什么样的参数只要我们的心思够细,并且不断的请求,实验 都是可以完全模拟出来的。

上面的例子验证是在cookie里 还有的会在header头里做相应的验证,比如添加一个参数,或者验证你的Referer 等等 所有的规则其实都可以模拟出来。

不过有一种,在做模拟登陆的时候那x浪来说,它会把你输入的密码和用户名加密成一个字符串,然后提交出去。这个时候我们就需要了解它们的加密规则

并且把用户名密码加密以后提交出去,理论上来说前端的加密都在JS里 == 很遗憾不是我的强项所以新浪的模拟登陆我还不会。。。

在有一种,就是心跳检测,每秒请求一次服务器 当检测不到心跳的时候就不再给你返回数据 这个时候你就抓不到数据了,所以我们还要相应的模拟出正常的心跳检测。

版权声明:本文为博主原创文章,未经博主允许不得转载。

php爬虫教程(一) 简单的页面抓取

最近朋友抓取点数据,写了几个抓取数据的脚本。 主要功能是,分别抓起x了么,美x,x度外卖的餐厅和菜品数据 ,后期我把代码分享出来。 今天就先说说简单的页面抓取 -------------------...
  • u014017080
  • u014017080
  • 2016年08月30日 15:07
  • 6587

PHP爬虫最全总结1

爬虫是我一直以来跃跃欲试的技术,现在的爬虫框架很多,比较流行的是基于python,nodejs,java,C#,PHP的的框架,其中又以基于python的爬虫流行最为广泛,还有的已经是一套傻瓜式的软件...
  • future_todo
  • future_todo
  • 2016年10月10日 20:04
  • 6041

不再使用php做爬虫

技术小白的反思在做爬虫之前自己纠结了些许,用什么做爬虫,当然听说过python在爬虫方面的璀璨事迹,但是又怕技术学的乱七八糟,目前就不打算学了,又加之最近学习php,就打算使用php,但是随之问题出现...
  • zkl_sarah
  • zkl_sarah
  • 2016年03月12日 08:00
  • 714

php爬虫教程,教你用php写爬虫源码,批量解析海量html网页

php爬虫教程,教你用php写爬虫,批量解析海量html源码 随着最近人们对大数据的追捧, 越来越多的人考虑使用爬虫的方式, 从网络上获取自己要的数据。 其实爬虫也叫采集, 使用爬虫采集网络数据的流...
  • towtotow
  • towtotow
  • 2017年12月19日 11:53
  • 2703

php爬虫教程(五)提高爬虫抓取效率

多进程抓取
  • u014017080
  • u014017080
  • 2016年08月30日 16:16
  • 2417

PHP写爬虫

地址:http://www.chinaz.com/web/2015/0930/452838.shtml 代码托管地址:https://github.com/hhqcontinue/zhihu...
  • u014359108
  • u014359108
  • 2016年01月03日 19:52
  • 8130

网页抓取:PHP实现网页爬虫方式小结

抓取某一个网页中的内容,需要对DOM树进行解析,找到指定节点后,再抓取我们需要的内容,过程有点繁琐。LZ总结了几种常用的、易于实现的网页抓取方式,如果熟悉JQuery选择器,这几种框架会相当简单。 ...
  • qq_30845505
  • qq_30845505
  • 2016年05月25日 15:49
  • 16702

自己用php做的一个简单的爬虫程序(带说明)

  • 2010年10月06日 22:23
  • 1.69MB
  • 下载

python 爬虫教程

网络爬虫(又被称为网页蜘蛛,网络机器人)网络爬虫,是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。...
  • freeking101
  • freeking101
  • 2017年03月17日 18:08
  • 321277

Scrapy爬虫入门教程四 Spider(爬虫)

Scrapy爬虫入门教程 Spider(爬虫)
  • Inke88
  • Inke88
  • 2017年03月06日 11:42
  • 1909
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:php爬虫教程(三)规则分析
举报原因:
原因补充:

(最多只允许输入30个字)