仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1504|回复: 20
打印 上一主题 下一主题

[学习教程] PHP网页编程之PHP收集利器 Snoopy 试专心得

[复制链接]
因胸联盟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:37:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
掌握静态网页的制作技术是学习开发网站的先决条件,这一点就讲到这里,因为这篇文章不是教程文章,也就不对技术进行深入的刨析了。   Snoopy是甚么? (下载snoopy)
Snoopy是一个php类,用来仿照web阅读器的功效,它能完成获得网页内容和发送表单的义务。
Snoopy的一些特色:
* 便利抓取网页的内容
* 便利抓取网页的文本内容 (去除HTML标签)
* 便利抓取网页的链接
* 撑持代办署理主机
* 撑持根基的用户名/暗码验证
* 撑持设置 user_agent, referer(去路), cookies 和 header content(头文件)
* 撑持阅读器转向,并能掌握转向深度
* 能把网页中的链接扩大成高质量的url(默许)
* 便利提交数据而且获得前往值
* 撑持跟踪HTML框架(v0.92增添)
* 撑持再转向的时分传递cookies (v0.92增添)
要想懂得的更深切些,你本人Google一下吧。上面就给几个复杂的例子:
1获得指定url内容
PHP代码
复制代码 代码以下:
$url = "http://www.jb51.net";
include("snoopy.php");
$snoopy = new Snoopy;
$snoopy->fetch($url); //获得一切内容
echo $snoopy->results; //显示了局
$snoopy->fetchtext //获得文本内容(去失落html代码)
$snoopy->fetchlinks //获得链接
$snoopy->fetchform //获得表单

2 表单提交
PHP代码
复制代码 代码以下:
$formvars["username"] = "admin";
$formvars["pwd"] = "admin";
$action = "http://www.jb51.net";//表单提交地址
$snoopy->submit($action,$formvars);//$formvars为提交的数组
echo $snoopy->results; //获得表单提交后的 前往的了局
$snoopy->submittext; //提交后只前往 去除html的 文本
$snoopy->submitlinks;//提交后只前往 链接

既然已提交的表单 那就能够做良多工作 接上去咱们来假装ip,假装阅读器
3 假装
PHP代码
复制代码 代码以下:
$formvars["username"] = "admin";
$formvars["pwd"] = "admin";
$action = "http://www.jb51.net";
include "snoopy.php";
$snoopy = new Snoopy;
$snoopy->cookies["PHPSESSID"] = 'fc106b1918bd522cc863f36890e6fff7'; //假装sessionid
$snoopy->agent = "(compatible; MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)"; //假装阅读器
$snoopy->referer = "http://s.jb51.net"; //假装来历页地址 http_referer
$snoopy->rawheaders["Pragma"] = "no-cache"; //cache 的http头信息
$snoopy->rawheaders["X_FORWARDED_FOR"] = "127.0.0.101"; //假装ip
$snoopy->submit($action,$formvars);
echo $snoopy->results;

本来咱们可以假装session 假装阅读器 ,假装ip, haha 可以做良多工作了。
例如 带验证码,验证ip 投票, 可以一直的投。
ps:这里假装ip ,实际上是假装http头, 所以普通的经由过程 REMOTE_ADDR 获得的ip是假装不了,
反而那些经由过程http头来获得ip的(可以避免代办署理的那种) 就能够本人来制作ip。
关于若何验证码 ,复杂说下:
起首用通俗的阅读器, 检查页面 , 找到验证码所对应的sessionid,
同时记下sessionid和验证码值,
接上去就用snoopy去捏造 。
道理:因为是统一个sessionid 所以获得的验证码和第一次输出的是一样的。
4 有时咱们能够需求捏造更多的器材,snoopy完整为咱们想到了
PHP代码
复制代码 代码以下:
$snoopy->proxy_host = "www.jb51.net";
$snoopy->proxy_port = "8080"; //利用代办署理
$snoopy->maxredirs = 2; //重定向次数
$snoopy->expandlinks = true; //是不是补全链接 在收集的时分常常用到
// 例如链接为 /images/taoav.gif 可改成它的全链接 http://www.jb51.net/images/taoav.gif,这个中央其实可以在最初输入的时分用ereg_replace函数本人交换
$snoopy->maxframes = 5 //答应的最大框架数
//注重抓取框架的时分 $snoopy->results 前往的是一个数组
$snoopy->error //前往报错信息

下面的根基用法懂得了,上面我就实例演示一次:
PHP代码
复制代码 代码以下:
<?
//echo var_dump($_SERVER);
include("Snoopy.class.php");
$snoopy = new Snoopy;
$snoopy->agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-
CN; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5 FirePHP/0.2.1";//这项是阅读器信
息,后面你用甚么阅读器检查cookie,就用谁人阅读器的信息(ps:$_SERVER可以检查到阅读器的信息)
$snoopy->referer = "http://bbs.jb51.net/index.php";
$snoopy->expandlinks = true;
$snoopy->rawheaders["COOKIE"]="__utmz=17229162.1227682761.29.7.utmccn=(referral)utmcsr=jb51.netutmcct=/html/index.htmlutmcmd=referral; cdbphpchina_smile=1D2D0D1; cdbphpchina_cookietime=2592000; __utma=233700831.1562900865.1227113506.1229613449.1231233266.16; __utmz=233700831.1231233266.16.8.utmccn=(referral)utmcsr=localhost:8080utmcct=/test3.phputmcmd=referral; __utma=17229162.1877703507.1227113568.1231228465.1231233160.58; uchome_loginuser=sinopf; xscdb_cookietime=2592000; __utmc=17229162; __utmb=17229162; cdbphpchina_sid=EX5w1V; __utmc=233700831; cdbphpchina_visitedfid=17; cdbphpchinaO766uPYGK6OWZaYlvHSuzJIP22VpwEMGnPQAuWCFL9Fd6CHp2e%2FKw0x4bKz0N9lGk; xscdb_auth=8106rAyhKpQL49eMs%2FyhLBf3C6ClZ%2B2idSk4bExJwbQr%2BHSZrVKgqPOttHVr%2B6KLPg3DtWpTMUI4ttqNNVpukUj6ElM; cdbphpchina_onlineusernum=3721";
$snoopy->fetch("http://bbs.jb51.net");
$n=ereg_replace("href=\"","href=\"http://bbs.jb51.net/",$snoopy->results );
echo ereg_replace("src=\"","src=\"http://bbs.jb51.net/",$n);
?>

这是摹拟上岸PHPCHINA服装论坛的进程,起首要检查本人阅读器的信
息:echo var_dump($_SERVER);这句代码可以看到本人阅读器的信息,把
$_SERVER['HTTP_USER_AGENT']后边的内容复制上去,粘在$snoopy->agent的中央,然后就是要检查本人的
COOKIE了,用本人在服装论坛的账号上岸服装论坛后,在阅读器地址栏里输出
javascript:document.write(document.cookie),回车,就能够看到本人的cookie信息,复制粘贴
到$snoopy->rawheaders["COOKIE"]=的后边。(我的cookie信息为了平安起见已删除一段内容)

然后再注重:

# $n=ereg_replace("href=\"","href=\"http://bbs.jb51.net/",$snoopy->results );

# echo ereg_replace("src=\"","src=\"http://bbs.jb51.net/",$n);

这两句代码,由于收集到的内容一切的HTML源码地址都是绝对链接,所以要交换成相对链接,如许就能够援用服装论坛的图片和CSS款式了。

多去关于PHP的网站,尤其有很多经典的文章,多读读这些文章显然是有好处的。
若相依 该用户已被删除
沙发
发表于 2015-2-4 03:50:31 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
再见西城 该用户已被删除
板凳
发表于 2015-2-9 04:35:37 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
小女巫 该用户已被删除
地板
发表于 2015-2-26 22:18:53 | 只看该作者
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
精灵巫婆 该用户已被删除
5#
发表于 2015-3-1 13:47:37 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
深爱那片海 该用户已被删除
6#
发表于 2015-3-1 20:11:38 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
活着的死人 该用户已被删除
7#
发表于 2015-3-6 15:19:23 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
山那边是海 该用户已被删除
8#
发表于 2015-3-7 00:06:17 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
乐观 该用户已被删除
9#
发表于 2015-3-11 05:36:36 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
admin 该用户已被删除
10#
发表于 2015-3-11 17:59:04 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
飘飘悠悠 该用户已被删除
11#
发表于 2015-3-13 03:08:31 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
爱飞 该用户已被删除
12#
发表于 2015-3-15 04:02:19 | 只看该作者
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
小妖女 该用户已被删除
13#
发表于 2015-3-16 06:51:42 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
简单生活 该用户已被删除
14#
发表于 2015-3-17 00:50:37 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
愤怒的大鸟 该用户已被删除
15#
发表于 2015-3-23 06:05:00 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
老尸 该用户已被删除
16#
发表于 2015-4-1 02:10:53 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
飘灵儿 该用户已被删除
17#
发表于 2015-4-1 04:11:20 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
谁可相欹 该用户已被删除
18#
发表于 2015-4-5 14:36:07 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
因胸联盟 该用户已被删除
19#
 楼主| 发表于 2015-4-16 19:40:10 | 只看该作者
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
金色的骷髅 该用户已被删除
20#
发表于 2015-4-25 16:36:47 | 只看该作者
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 07:25

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表