php抓取网页(#x27;)fetchlinks($url)该方法用于获取网页所有链接)

优采云 发布时间: 2022-01-24 02:02

  php抓取网页(#x27;)fetchlinks($url)该方法用于获取网页所有链接)

  1 爬取网页内容

  2 获取网页的文本内容(去除HTML标签) fetchtext

  3 抓取网页链接,form fetchlinks fetchform

  4 支持代理主机

  5 支持基本用户名/密码认证

  6 支持设置user_agent、referer(来)、cookies和header内容(头文件)

  7 支持浏览器重定向,控制重定向深度

  8 可以将网页中的链接扩展成高质量的url(默认)

  9 提交数据并获取返回值

  10 支持跟踪 HTML 帧

  11. 支持重定向时传递cookies

  fetch($url) 该方法用于获取网页内容,类似于 file_get_contents

  submit($posturl,$params,$files) 该方法提交表单数据,第二个参数为一维数组,第三个参数为可选参数,上传文件时使用,如array('myfile' => './images/test.jpg')

  fetchlinks($url) 该方法用于获取网页的所有链接

  fetchform($url) 该方法用于获取网页上的表单内容

  fetchtext($url) 该方法允许用户获取不带标签的网页内容

  submitlinks($posturl,$params) 该方法提交表单数据,参数与submit方法相同,区别在于获取的结果数据是一个链接

  submittext($posturl,$params) 该方法提交表单数据,参数与提交方法相同,只是获取的结果数据为文本数据

  set_submit_multipart() 该方法无参数,文件上传生效类似于在form中设置enctype="multipart/form-data"

  set_submit_normal() 这个方法没有参数,相当于设置了一个普通的表单,不是用户文件

  setcookies() 这个方法没有参数。保存下一个请求的响应 cookie 信息。首先,$snoopy->status 是*敏*感*词*返回的状态码。成功返回应该是200,其他情况下返回应该是错误的。,并且有效请求状态应该大于0,$snoopy->timed_out的值如果没有超时则为false,如果读取请求超时则返回值为true。

  1//表单页面

2$blogFormUrl = 'http://blog.home.blogbus.com/5865443/posts/form';

3//post数据

4$blogPostUrl = 'http://blog.home.blogbus.com/5865443/posts/';

5$form_data = array(

6'title' => '321333',

7'content' => '132131',

8'post_time' => date('Y-m-d H:i'),

9);

10getPostPage($blogPostUrl, $form_data , $blogFormUrl);

11

12function getPostPage($postUrl, $form_data = [], $formUrl = '') {

13 $snoopy = new Snoopy;

14 $snoopy->read_timeout = 4; //读取超时时间

15 $snoopy->fetch($formUrl); //获取所有内容

16 $result = '';

17 if ($snoopy->status == '200' && !$snoopy->timed_out) {

18 $snoopy->setcookies();

19 $cookies = $snoopy->cookies;

20

21 $snoopy->referer = $formUrl;

22 $snoopy->cookies = $cookies;

23 $status = $snoopy->submit($postUrl, $form_data, $formUrl);

24 if ($status == true) {

25 $result = $snoopy->results;

26 }

27 }

28 return $result;

29}

30

31function findGetPage($route, $param = array()) {

32 $query_string = http_build_query($param);

33 $query_string = $query_string ? "?" . $query_string : '';

34 $url = $route . $query_string;

35 $snoopy = new Snoopy;

36 $result = $snoopy->fetch($url); //获取所有内容

37 if ($result) {

38 $result = $snoopy->results;

39 }

40 return $result;

41}

42

43

  1 获取指定url的内容

  1fetch($url); //获取所有内容

6echo $snoopy->results; //显示结果

7//可选以下

8$snoopy->fetchtext; //获取文本内容(去掉html代码)

9$snoopy->fetchlinks; //获取链接

10$snoopy->fetchform; //获取表单

11?>

12

  3迷彩

  1cookies["PHPSESSID"] = 'fc106b1918bd522cc863f36890e6fff7'; //伪装sessionid

8$snoopy->agent = "(compatible; MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)"; //伪装浏览器

9$snoopy->referer = "http://www.only4.cn"; //伪装来源页地址 http_referer

10$snoopy->rawheaders["Pragma"] = "no-cache"; //cache 的http头信息

11$snoopy->rawheaders["X_FORWARDED_FOR"] = "127.0.0.1"; //伪装ip

12$snoopy->proxy_host = "www.only4.cn";

13$snoopy->proxy_port = "8080"; //使用代理

14$snoopy->maxredirs = 2; //重定向次数

15$snoopy->expandlinks = true; //是否补全链接 在采集的时候经常用到 /images/taoav.gif 可改为它的全链接 http://www.taoav.com/images/taoav.gif

16$snoopy->maxframes = 5; //允许的最大框架数

17$snoopy->submit($action,$formvars);

18echo $snoopy->results;

19//$snoopy->error; //返回报错信息

20?>

21

  1 原来我们可以伪装session 伪装浏览器 ,伪装ip, haha 可以做很多事情了。

2

  比如有验证码,验证ip投票,就可以继续投票。

  ps:这里伪装的ip其实是伪装成http头的,所以一般通过REMOTE_ADDR得到的ip是不能伪装的。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线