Heim >Backend-Entwicklung >PHP-Problem >Was ist die Verwendung von PHP Snoopy
php-Snoopy-Nutzung: 1. [fetch($URI)] zum Erfassen des Inhalts der Webseite 2. [fetchtext($URI)] zum Entfernen von HTML-Tags und anderen irrelevanten Daten 3. [fetchform($URI)“ ] um den Inhalt des Formulars auf der Webseite zurückzugeben.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP Version 5.6, DELL G3-Computer.
PHP-Snoopy-Verwendung:
Snoopy-Klassenmethoden und Beispiele:
1, fetch($URI)
fetch($URI)
这是为了抓取网页的内容而使用的方法。
$URI参数是被抓取网页的URL地址。
抓取的结果被存储在 $this->results 中。
如果你正在抓取的是一个框架,Snoopy将会将每个框架追踪后存入数组中,然后存入 $this->results。
2、fetchtext($URI)
本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中的文字内容。
3、fetchform($URI)
本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中表单内容(form)。
4、fetchlinks($URI)
本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中链接(link)。
默认情况下,相对链接将自动补全,转换成完整的URL。
5、submit($URI,$formvars)
本方法向$URL指定的链接地址发送确认表单。$formvars是一个存储表单参数的数组。
6、submittext($URI,$formvars)
本方法类似于submit(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回登陆后网页中的文字内容。
7、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 Snoopy; $snoopy->proxy_host = "https://www.jb51.net"; $snoopy->proxy_port = "80"; $snoopy->agent = "(compatible; MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)"; $snoopy->referer = "https://www.jb51.net"; $snoopy->cookies["SessionID"] = 238472834723489l; $snoopy->cookies["favoriteColor"] = "RED"; $snoopy->rawheaders["Pragma"] = "no-cache"; $snoopy->maxredirs = 2; $snoopy->offsiteok = false; $snoopy->expandlinks = false; $snoopy->user = "joe"; $snoopy->pass = "bloe"; if($snoopy->fetchtext("https://www.jb51.net")) { echo "<PRE>".htmlspecialchars($snoopy->results)."\n"; } else echo "error fetching document: ".$snoopy->error."\n";
获取指定url内容
代码如下:
<?php $url = "https://www.jb51.net"; include("snoopy.php"); $snoopy = new Snoopy; $snoopy->fetch($url); //获取所有内容 echo $snoopy->results; //显示结果 //可选以下 $snoopy->fetchtext //获取文本内容(去掉html代码) $snoopy->fetchlinks //获取链接 $snoopy->fetchform //获取表单 ?>
表单提交
代码如下:
<?php $formvars["username"] = "admin"; $formvars["pwd"] = "admin"; $action = "https://www.jb51.net";//</a>表单提交地址 $snoopy->submit($action,$formvars);//$formvars为提交的数组 echo $snoopy->results; //获取表单提交后的 返回的结果 //可选以下 $snoopy->submittext; //提交后只返回 去除html的 文本 $snoopy->submitlinks;//提交后只返回 链接 ?>
既然已经提交的表单 那就可以做很多事情 接下来我们来伪装ip,伪装浏览器
伪装浏览器
代码如下:
<?php $formvars["username"] = "lanfengye"; $formvars["pwd"] = "lanfengye"; $action = "https://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 = "https://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->results; ?>
原来我们可以伪装session 伪装浏览器 ,伪装ip, haha 可以做很多事情了。
例如:带验证码,验证ip 投票, 可以不停的投。
ps:这里伪装ip ,其实是伪装http头, 所以一般的通过 REMOTE_ADDR
Wenn Sie einen Frame scrapen, verfolgt Snoopy jeden Frame, speichert ihn in einem Array und speichert ihn dann in $this->results.
2.fetchtext($URI)
Diese Methode ähnelt fetch(). Der einzige Unterschied besteht darin, dass diese Methode HTML-Tags und andere irrelevante Daten entfernt und nur den Textinhalt zurückgibt die Webseite. 4.3.
fetchform($URI)
Diese Methode ähnelt fetch(). Der einzige Unterschied besteht darin, dass diese Methode HTML-Tags und andere irrelevante Daten entfernt und nur den Formularinhalt zurückgibt (. bilden ).
fetchlinks($URI)
🎜🎜Diese Methode ähnelt fetch(). Der einzige Unterschied besteht darin, dass diese Methode HTML-Tags und andere irrelevante Daten entfernt und nur den Link zurückgibt Webseite. 🎜🎜Standardmäßig werden relative Links automatisch vervollständigt und in vollständige URLs umgewandelt. 🎜🎜5. submit($URI,$formvars)
🎜🎜Diese Methode sendet ein Bestätigungsformular an die durch $URL angegebene Linkadresse. $formvars ist ein Array, das Formularparameter speichert. 🎜🎜6. submittext($URI,$formvars)
🎜🎜Diese Methode ähnelt subscribe(). Der einzige Unterschied besteht darin, dass diese Methode HTML-Tags und andere irrelevante Daten entfernt und nur die zurückgibt Login-Textinhalt in . 🎜🎜7. submitlinks($URI)
🎜🎜Diese Methode ähnelt subscribe(). Der einzige Unterschied besteht darin, dass diese Methode HTML-Tags und andere irrelevante Daten entfernt und nur den Link zurückgibt Webseite. 🎜🎜Standardmäßig werden relative Links automatisch vervollständigt und in vollständige URLs umgewandelt. 🎜🎜🎜Snoopy-Sammlungsklassenattribute: (Standardwert steht in Klammern)🎜🎜🎜🎜$host Der verbundene Host 🎜🎜$port Der verbundene Port 🎜🎜$proxy_host Der verwendete Proxy-Host, falls vorhanden 🎜🎜$proxy_port verwendeter Proxy-Host-Port , falls vorhanden 🎜🎜$agent Tarnung des Benutzeragenten (Snoopy v0.1) 🎜🎜$Referer-Quelleninformationen, falls vorhanden 🎜🎜$cookies Cookies, falls vorhanden 🎜🎜$rawheaders Andere Header-Informationen, falls vorhanden 🎜🎜$maxredirs Die maximale Anzahl von Weiterleitungen, 0=nicht erlaubt (5)🎜🎜$offsiteok, ob Weiterleitungen außerhalb der Website zugelassen werden sollen oder nicht (true)🎜🎜$expandlinks Ob alle Links vervollständigt werden sollen, um die Adresse zu vervollständigen (true)🎜🎜$Benutzerauthentifizierung, Benutzername, wenn beliebig 🎜🎜$Pass-Authentifizierungsbenutzername, falls vorhanden 🎜🎜$accept HTTP-Akzeptanztyp (image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*)🎜🎜$error Wo der Fehler gemeldet wird , falls vorhanden🎜🎜$response_code Der vom Server zurückgegebene Antwortcode🎜🎜$headers Die vom Server zurückgegebenen Header-Informationen🎜🎜$maxlength Die längste zurückgegebene Datenlänge🎜🎜 $read_timeout Timeout für Lesevorgang (erfordert PHP 4 Beta 4+) Eingestellt auf 0 für keine Zeitüberschreitung 🎜🎜$timed_out Wenn bei einem Lesevorgang eine Zeitüberschreitung auftritt, gibt dieses Attribut „true“ zurück (erfordert PHP 4 Beta 4+) 🎜🎜$maxframes ermöglicht die Verfolgung der maximalen Anzahl von Frames🎜🎜$status Der Status des erfassten http🎜 🎜$temp_dir Das temporäre Dateiverzeichnis (/tmp), in das der Webserver schreiben kann🎜🎜$curl_path Das Verzeichnis der cURL-Binärdatei. Wenn keine cURL-Binärdatei vorhanden ist, setzen Sie es auf false🎜🎜 🎜Das Folgende ist ein Beispiel: 🎜🎜 Der Code lautet wie folgt:<?php $snoopy->proxy_host = "https://www.jb51.net"; $snoopy->proxy_port = "8080"; //使用代理 $snoopy->maxredirs = 2; //重定向次数 $snoopy->expandlinks = true; //是否补全链接 在采集的时候经常用到 // 例如链接为 /images/taoav.gif 可改为它的全链接 <a href="https://www.jb51.net/images/taoav.gif">https://www.jb51.net/images/taoav.gif</a> $snoopy->maxframes = 5 //允许的最大框架数 //注意抓取框架的时候 $snoopy->results 返回的是一个数组 $snoopy->error //返回报错信息 ?>🎜Holen Sie sich den Inhalt der angegebenen URL🎜🎜Der Code lautet wie folgt:
REMOTE_ADDR
erhaltene IP nicht verschleiert werden kann, aber die über den http-Header erhaltenen IP-Adressen (die Proxying verhindern können) sind Ihre Art Sie können Ihre eigene IP erstellen. 🎜🎜Über die Überprüfung des Codes sprechen wir kurz: 🎜🎜Verwenden Sie zunächst einen normalen Browser, um die Seite anzuzeigen, suchen Sie die Sitzungs-ID, die dem Bestätigungscode entspricht, notieren Sie die Sitzungs-ID und den Wert des Bestätigungscodes und fälschen Sie sie dann mit Snoopy . 🎜🎜🎜Prinzip: 🎜Da es sich um dieselbe Sitzungs-ID handelt, ist der erhaltene Bestätigungscode derselbe wie der, der zum ersten Mal eingegeben wurde. 🎜🎜Manchmal müssen wir vielleicht noch mehr Dinge vortäuschen, Snoopy hat das komplett für uns bedacht🎜rrreee🎜🎜Empfehlungen für entsprechende Videos: 🎜PHP-Programmierung vom Einstieg bis zum Master🎜🎜🎜Das obige ist der detaillierte Inhalt vonWas ist die Verwendung von PHP Snoopy. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!