zoukankan      html  css  js  c++  java
  • snoopy——PHP版的网络客户端

    原文地址:http://www.phpobject.net/blog/read.php/91.htm
    下载地址:下载文件 Snoopy 1.2.3

    snoopy是一个php类,用来模仿web浏览器的功能,它能完成获取网页内容和发送表单的任务。
    下面是它的一些特征:
    1、方便抓取网页的内容
    2、方便抓取网页的文字(去掉HTML代码)
    3、方便抓取网页的链接
    4、支持代理主机
    5、支持基本的用户/密码认证模式
    6、支持自定义用户agent,referer,cookies和header内容
    7、支持浏览器转向,并能控制转向深度
    8、能把网页中的链接扩展成高质量的url(默认)
    9、方便提交数据并且获取返回值
    10、支持跟踪HTML框架(v0.92增加)
    11、支持再转向的时候传递cookies

    下面是简单的例子,比如说我们抓取我的blog的文字

    include "Snoopy.class.php";
    $snoopy = new Snoopy;
    $snoopy->fetchtext("http://www.phpobject.net/blog");
    echo $snoopy->results;

    ^_^,不错把,在比如抓取链接

    include "Snoopy.class.php";
    $snoopy = new Snoopy;
    $snoopy->fetchlinks("http://www.phpobject.net/blog");
    print_r($snoopy->results);

    使用snoopy提交数据实现登陆

    模拟登陆可以用curl或者socket来实现,当curl需要服务器相应的启用curl module,自己socket实现相对比较麻烦,使用snoopy就简单了很多啦。

    在这里,我们使用喜悦国际村做为例子。(^_^,纯属研究)

    首先,我们要获取到登陆需要发送什么字段,目标地址是什么。这里我们使用snoopy的fetchform来实现。

    include "Snoopy.class.php";
    $snoopy = new Snoopy;
    $snoopy->fetchform("http://www.phpx.com/happy/logging.php?action=login");
    print $snoopy->results;

    当然你也可以直接查看http://www.phpx.com/happy/…的源代码来实现,不过这样更加方便把。这里,我们获取到目标和提交的数据,下一步就可以实现模拟登陆了。代码如下:

    include "Snoopy.class.php";
    $snoopy = new Snoopy;
    $submit_url = "http://www.phpx.com/happy/logging.php?action=login";
     
    $submit_vars["loginmode"] = "normal";
    $submit_vars["styleid"] = "1";
    $submit_vars["cookietime"] = "315360000";
    $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->results;

    ^_^,是不是显示你已经登陆了?使用snoopy就是这么简单!

  • 相关阅读:
    EL表达式遍历方法之一
    django auth认证
    总结五个在办公中使用很爽的软件
    django所遇到问题简单总结
    django 远程数据库mysql migrate失败报error 1045之 解决方案
    深拷贝和浅拷贝之地址改变
    序列表转换成横向菜单
    Pycharm破解
    css里涉及到定位相关的example实例
    记录求职
  • 原文地址:https://www.cnblogs.com/analyzer/p/1287543.html
Copyright © 2011-2022 走看看