snoopy submit中怎样使用submit方法

PHP snoopy类使用方法详细介绍
李清波个人博客网站,分享个人技术,分享个人心得。
PHP snoopy类使用方法详细介绍
Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单,可以用来开发一些采集程序和小偷程序,本文章详细介绍snoopy的使用教程。Snoopy的一些特点:抓取网页的内容 fetch抓取网页的文本内容 (去除HTML标签) fetchtext抓取网页的链接,表单 fetchlinks fetchform支持代理主机 支持基本的用户名/密码验证 支持设置 user_agent, referer(来路), cookies 和 header content(头文件)支持浏览器重定向,并能控制重定向深度 能把网页中的链接扩展成高质量的url(默认)提交数据并且获取返回值 支持跟踪HTML框架 支持重定向的时候传递cookies要求php4以上就可以了 由于本身是php一个类 无需扩支持 服务器不支持curl时候的最好选择,Snoopy类方法及示例:fetch($URI)这是为了抓取网页的内容而使用的方法。$URI参数是被抓取网页的URL地址。 抓取的结果被存储在 $this-&results 中。 如果你正在抓取的是一个框架,Snoopy将会将每个框架追踪后存入数组中,然后存入 $this-&results。fetchtext($URI)本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中的文字内容。fetchform($URI)本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中表单内容(form)。fetchlinks($URI)本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中链接(link)。 默认情况下,相对链接将自动补全,转换成完整的URL。submit($URI,$formvars)本方法向$URL指定的链接地址发送确认表单。$formvars是一个存储表单参数的数组。submittext($URI,$formvars)本方法类似于submit(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回登陆后网页中的文字内容。submitlinks($URI)本方法类似于submit(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中链接(link)。 默认情况下,相对链接将自动补全,转换成完整的URL。Snoopy采集类属性: (默认值在括号里)$host 连接的主机$port 连接的端口$proxy_host 使用的代理主机,如果有的话$proxy_port 使用的代理主机端口,如果有的话$agent 用户代理伪装 (Snoopy v0.1)$referer 来路信息,如果有的话$cookies cookies 如果有的话$rawheaders 其他的头信息, 如果有的话$maxredirs 最大重定向次数, 0=不允许 (5)$offsiteok whether or not to allow redirects off-site. (true)$expandlinks 是否将链接都补全为完整地址 (true)$user 认证用户名, 如果有的话$pass 认证用户名, 如果有的话$accept http 接受类型 (image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*)$error 哪里报错, 如果有的话$response_code 从服务器返回的响应代码$headers 从服务器返回的头信息$maxlength 最长返回数据长度$read_timeout 读取操作超时 (requires PHP 4 Beta 4+) 设置为0为没有超时$timed_out 如果一次读取操作超时了,本属性返回 true (requires PHP 4 Beta 4+)$maxframes 允许追踪的框架最大数量$status 抓取的http的状态$temp_dir 网页服务器能够写入的临时文件目录 (/tmp)$curl_path cURL binary 的目录, 如果没有cURL binary就设置为 false下面是一个示例:include&&Snoopy.class.php&;
$snoopy&=&new&S
$snoopy-&proxy_host&=&&http://www.jb51.net&;
$snoopy-&proxy_port&=&&80&;
$snoopy-&agent&=&&(&MSIE&4.01;&MSN&2.5;&AOL&4.0;&Windows&98)&;
$snoopy-&referer&=&&http://www.jb51.net&;
$snoopy-&cookies[&SessionID&]&=&489l;
$snoopy-&cookies[&favoriteColor&]&=&&RED&;
$snoopy-&rawheaders[&Pragma&]&=&&no-cache&;
$snoopy-&maxredirs&=&2;
$snoopy-&offsiteok&=&
$snoopy-&expandlinks&=&
$snoopy-&user&=&&joe&;
$snoopy-&pass&=&&bloe&;
if($snoopy-&fetchtext(&http://www.jb51.net&))
&&&&echo&&&PRE&&.htmlspecialchars($snoopy-&results).&&/PRE&\n&;
echo&&error&fetching&document:&&.$snoopy-&error.&\n&;获取指定url内容&?php
$url&=&&http://www.jb51.net&;
include(&snoopy.php&);
$snoopy&=&new&S
$snoopy-&fetch($url);&//获取所有内容
echo&$snoopy-&&//显示结果
//可选以下
$snoopy-&fetchtext&//获取文本内容(去掉html代码)
$snoopy-&fetchlinks&//获取链接
$snoopy-&fetchform&&//获取表单
?&表单提交&?php
$formvars[&username&]&=&&admin&;
$formvars[&pwd&]&=&&admin&;
$action&=&&http://www.jb51.net&;//&/a&表单提交地址
$snoopy-&submit($action,$formvars);//$formvars为提交的数组
echo&$snoopy-&&//获取表单提交后的&返回的结果
//可选以下
$snoopy-&&//提交后只返回&去除html的&文本
$snoopy-&//提交后只返回&链接
?&既然已经提交的表单 那就可以做很多事情 接下来我们来伪装ip,伪装浏览器伪装浏览器&?php
$formvars[&username&]&=&&lanfengye&;
$formvars[&pwd&]&=&&lanfengye&;
$action&=&&http://www.jb51.net&;
include&&snoopy.php&;
$snoopy&=&new&S
$snoopy-&cookies[&PHPSESSID&]&=&'fc106bcc863f36890e6fff7';&//伪装sessionid
$snoopy-&agent&=&&(&MSIE&4.01;&MSN&2.5;&AOL&4.0;&Windows&98)&;&//伪装浏览器
$snoopy-&referer&=&&http://www.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-&
?&原来我们可以伪装session 伪装浏览器 ,伪装ip, haha 可以做很多事情了。 例如 带验证码,验证ip 投票, 可以不停的投。ps:这里伪装ip ,其实是伪装http头, 所以一般的通过 REMOTE_ADDR 获取的ip是伪装不了, 反而那些通过http头来获取ip的(可以防止代理的那种) 就可以自己来制造ip。 关于如何验证码 ,简单说下: 首先用普通的浏览器, 查看页面 , 找到验证码所对应的sessionid, 同时记下sessionid和验证码值, 接下来就用snoopy去伪造 。 原理:由于是同一个sessionid 所以取得的验证码和第一次输入的是一样的。有时我们可能需要伪造更多的东西,snoopy完全为我们想到了&?php
&$snoopy-&proxy_host&=&&http://www.jb51.net&;
&$snoopy-&proxy_port&=&&8080&;&//使用代理
&$snoopy-&maxredirs&=&2;&//重定向次数
&$snoopy-&expandlinks&=&&//是否补全链接&在采集的时候经常用到
&//&例如链接为&/images/taoav.gif&可改为它的全链接&&a&href=&http://www.jb51.net/images/taoav.gif&&http://www.jb51.net/images/taoav.gif&/a&
&$snoopy-&maxframes&=&5&//允许的最大框架数
&//注意抓取框架的时候&$snoopy-&results&返回的是一个数组
&$snoopy-&error&//返回报错信息
?&其实以上介绍的方法都只是获取内容信息,但如果想通过snoopy来实现采集能容,这还需要独立的添加匹配代码。思路:根据snoopy类中fetchlinks方法获取响应的链接,在根据里面的URL地址根据方法fetch或fetchtext来获取文章内容,再根据匹配规则截取文章正文部分,才能真正实现采集文章。不过这也是简单的介绍一下,至于怎样完整实现采集功能,还得自己写大量的代码,好好加油吧,如有不明白的地方,也可以留言给我一起讨论。下载地址:http://sourceforge.net/projects/snoopy/files/
上一篇:没有了Snoopy类使用小例子_PHP教程_ThinkSAAS
Snoopy类使用小例子
Snoopy类使用小例子
内容来源: 网络
snoopy是一个php类,用来模仿web浏览器的功能,它能完成获取网页内容和发送表单的任务。 下面是它的一些特征: 1、方便抓取网页的内容 2、方便抓取网页的文字(去掉HTML代码) 3、方便抓取网页的链接 4、支持代理主机 5、支持基本的用户/密码认证模式 6、支持自定义用户agent,referer,cookies和header内容 7、支持浏览器转向,并能控制转向深度 8、能把网页中的链接扩展成高质量的url(默认) 9、方便提交数据并且获取返回值 10、支持跟踪HTML框架(v0.92增加) 11、支持再转向的时候传递cookies 具体使用请看下载文件中的说明。
代码如下:&?php
include "Snoopy.class.php";
$snoopy = new S
$snoopy-&fetchform("/happy/logging.php?action=login");
print $snoopy-&
include "Snoopy.class.php";
$snoopy = new S
$submit_url = "/happy/logging.php?action=login";
$submit_vars["loginmode"] = "normal";
$submit_vars["styleid"] = "1";
$submit_vars["cookietime"] = "";
$submit_vars["loginfield"] = "username";
$submit_vars["username"] = "********"; //你的用户名
$submit_vars["password"] = "*******";
//你的密码
$submit_vars["questionid"] = "0";
$submit_vars["answer"] = "";
$submit_vars["loginsubmit"] = "提
$snoopy-&submit($submit_url,$submit_vars);
print $snoopy-&
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
我是古代人,我不短信,不网聊,不漂洋过海,不被堵在路上。如果您想我,我就翻过两座山,走五里路,我去牵你的手
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
分类: PHP编程
14:39 4018人阅读 评论(5) 收藏 举报PHP代码&? &&$url = ""; &&include("snoopy.php"); &&$snoopy = new S &&$snoopy-&fetch($url); //获取所有内容 &&echo $snoopy-& //显示结果 &&//可选以下 &&$snoopy-&fetchtext //获取文本内容(去掉html代码) &&$snoopy-&fetchlinks //获取链接 &&$snoopy-&fetchform &//获取表单 &&?& &&表单提交PHP代码&?php &&$formvars["username"] = "admin"; &&$formvars["pwd"] = "admin"; &&& &&$action = "";//表单提交地址 &&$snoopy-&submit($action,$formvars);//$formvars为提交的数组 &&echo $snoopy-& //获取表单提交后的 返回的结果 &&//可选以下 &&$snoopy-& //提交后只返回 去除html的 文本 &&$snoopy-&//提交后只返回 链接 &&?& &既然已经提交的表单 那就可以做很多事情 接下来我们来伪装ip,伪装浏览器伪装PHP代码&?php &&$formvars["username"] = "admin"; &&$formvars["pwd"] = "admin"; &&$action = ""; &&include "snoopy.php"; &&$snoopy = new S &&$snoopy-&cookies["PHPSESSID"] = 'fc106bcc863f36890e6fff7'; //伪装sessionid &&$snoopy-&agent = "( MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)"; //伪装浏览器 &&$snoopy-&referer = ; //伪装来源页地址 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-& &&?& &&原来我们可以伪装session 伪装浏览器 ,伪装ip, haha 可以做很多事情了。例如 带验证码,验证ip 投票, 可以不停的投。ps:这里伪装ip ,其实是伪装http头, 所以一般的通过 REMOTE_ADDR 获取的ip是伪装不了,反而那些通过http头来获取ip的(可以防止代理的那种) 就可以自己来制造ip。关于如何验证码 ,简单说下:首先用普通的浏览器, 查看页面 , 找到验证码所对应的sessionid,同时记下sessionid和验证码值,接下来就用snoopy去伪造 。原理:由于是同一个sessionid 所以取得的验证码和第一次输入的是一样的。有时我们可能需要伪造更多的东西,snoopy完全为我们想到了PHP代码&?php &&$snoopy-&proxy_host = ""; &&$snoopy-&proxy_port = "8080"; //使用代理 &&$snoopy-&maxredirs = 2; //重定向次数 &&$snoopy-&expandlinks = //是否补全链接 在采集的时候经常用到 &&// 例如链接为 /images/taoav.gif 可改为它的全链接 /images/taoav.gif &&$snoopy-&maxframes = 5 //允许的最大框架数 &&//注意抓取框架的时候 $snoopy-&results 返回的是一个数组 &&$snoopy-&error //返回报错信息 &&?&&
阅读(871)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'PHP:Snoopy抓取页面以及模拟提交表单',
blogAbstract:'PHP:Snoopy抓取页面以及模拟提交表单分类: PHP编程
14:39 4018人阅读 评论(5) 收藏 举报PHP代码&? &&$url = \"\"; &&include(\"snoopy.php\"); &&$snoopy = new S &&$snoopy-&fetch($url); //获取所有内容 &&echo $snoopy-& //显示结果 &&//可选以下 &&$snoopy-&fetchtext //获取文本内容(去掉html代码) &&$snoopy-&fetchlinks //获取链接 &&',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:6,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'我是古代人,我不短信,不网聊,不漂洋过海,不被堵在路上。如果您想我,我就翻过两座山,走五里路,我去牵你的手',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}html中用submit提交表单
不瞒大家说,Doris之前一直都是用button来提交表单的,但是会出现输入后无法用回车键直接查询的情况,而且总觉得不正规。今天下决心要改成submit的标准形式。
(崔学长也是用button的,但是由于在前面写了form标签,指定了action的地址,所以他还是可以直接回车的;
而我是只用了button,并没有form,然后在js中写了跳转的地址,所以我的并不能回车。)
原来的代码:————————————————————————————————————————
type="button" name="button"
value="搜索"onclick="searchshow()"/&
function searchshow(){
var cont =
document.getElementByIdx_x_x_x_x_x_x_x("searchtext").
window.open('searchshow.php?cont='+cont+'&action=null&display=show','newwindow');
//只是传参给后台,不算是真正的打开
& & $cont = $_GET['cont'];
$action=$_GET['action'];
$display=$_GET['display'];
& &//接受JS里传来的参数
$tpl-&assign('searchList',$searchArray);
$tpl-&assign('num',$num);
$tpl-&assign('cont',$cont);
$tpl-&display('searchshow.tpl');
& &//在此处可以要求打开新的页面。
(此时感悟到ajax一般是用在同一个页面的刷新显示中)
修正的新用法submit如下—————————————————————————————————
具体可以参考这个例子
action="/example/hdom/hdom_submitpage.html"
onsubmit="return
validate()" &
//注意一定要写return 这样js 判断才会有效哦
//名字(最多 10 个字符):&input type="text" id="fname"
size="20"&&br /&
//&input type="submit"
value="提交"&&
&//判断值不为空
function jstry(){
var start= document.getElementByIdx_x('start').
var end = document.getElementByIdx_x('end').
& &if (start=="")
& & alert("please input the
startpoint");
& &if (end=="")
& & alert("please input the
endpoint");
& &if (start
& & alert("make sure,start
应该和上面一样,就是display一下吧。
1、补充说一点,如果在form表单里写method=post,那么在PHP中就直接用$a=$_post['name'],就可以获得到他的值,非常非常方便,我才发现我之前编程真是一坨x,我还在JS里面用一种很老掉牙的方式穿过去。他妹子的。怎么没有早点发现呢。
2、一般就用submit来提交就好了,若需要有验证,在form属性里用onsubmit=aaa();若验证通过了,才会向x.php发过去哦。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。php中Snoopy类用法实例
作者:不吃皮蛋
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了php中Snoopy类用法,实例分析了使用Snoopy类实现页面抓取的相关技巧,需要的朋友可以参考下
本文实例讲述了php中Snoopy类用法。分享给大家供大家参考。具体分析如下:
这里演示了php中如何通过Snoopy抓取网页信息
snoopy类的下载地址:http://sourceforge.net/projects/snoopy/
You need the snoopy.class.php from
http://snoopy.sourceforge.net/
include("snoopy.class.php");
$snoopy = new S
// need an proxy?:
//$snoopy-&proxy_host = "my.proxy.host";
//$snoopy-&proxy_port = "8080";
// set browser and referer:
$snoopy-&agent = "Mozilla/4.0 ( MSIE 6.0; Windows NT 5.1)";
$snoopy-&referer = "http://www.jonasjohn.de/";
// set some cookies:
$snoopy-&cookies["SessionID"] = '489';
$snoopy-&cookies["favoriteColor"] = "blue";
// set an raw-header:
$snoopy-&rawheaders["Pragma"] = "no-cache";
// set some internal variables:
$snoopy-&maxredirs = 2;
$snoopy-&offsiteok =
$snoopy-&expandlinks =
// set username and password (optional)
//$snoopy-&user = "joe";
//$snoopy-&pass = "bloe";
// fetch the text of the website :
if($snoopy-&fetchtext("")){
// other methods: fetch, fetchform, fetchlinks, submittext and submitlinks
// response code:
print "response code: ".$snoopy-&response_code."&br/&\n";
// print the headers:
print "&b&Headers:&/b&&br/&";
while(list($key,$val) = each($snoopy-&headers)){
print $key.": ".$val."&br/&\n";
print "&br/&\n";
// print the texts of the website:
print "&pre&".htmlspecialchars($snoopy-&results)."&/pre&\n";
print "Snoopy: error while fetching document: ".$snoopy-&error."\n";
希望本文所述对大家的php程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 spark submit使用详解 的文章

 

随机推荐