php抓取网页(#x27;)fetchlinks($url)该方法用于获取网页所有链接)
优采云 发布时间: 2022-01-24 02:02php抓取网页(#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是不能伪装的。