>백엔드 개발 >PHP 문제 >PHP 스누피의 사용법은 무엇입니까

PHP 스누피의 사용법은 무엇입니까

coldplay.xixi
coldplay.xixi원래의
2021-03-11 17:54:122255검색

php 스누피 사용법: 1. [fetch($URI)] 웹 페이지의 콘텐츠를 캡처합니다. 2. [fetchtext($URI)] HTML 태그 및 기타 관련 없는 데이터를 제거합니다. ] 웹 페이지의 양식 내용을 반환합니다.

PHP 스누피의 사용법은 무엇입니까

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 5.6, DELL G3 컴퓨터.

php snoopy 사용법:

Snoopy 클래스 메소드 및 예:

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"] = &#39;fc106b1918bd522cc863f36890e6fff7&#39;; //伪装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

웹페이지의 콘텐츠를 크롤링하는 데 사용되는 메소드입니다.

$URI 매개변수는 크롤링된 웹페이지의 URL 주소입니다.

가져온 결과는 $this->results에 저장됩니다.

프레임을 스크랩하는 경우 스누피는 각 프레임을 추적하여 배열에 저장한 다음 $this->result에 저장합니다.

2. fetchtext($URI)

이 메서드는 fetch()와 유사합니다. 유일한 차이점은 이 메서드는 HTML 태그 및 기타 관련 없는 데이터를 제거하고 텍스트 내용만 반환한다는 것입니다. 웹페이지.

3. fetchform($URI)이 메서드는 fetch()와 유사합니다. 유일한 차이점은 이 메서드가 HTML 태그 및 기타 관련 없는 데이터를 제거하고 양식 콘텐츠( 형태 ).

4. fetchlinks($URI)🎜🎜이 메서드는 fetch()와 유사하지만 유일한 차이점은 이 메서드는 HTML 태그 및 기타 관련 없는 데이터를 제거하고 웹의 링크만 반환한다는 것입니다. 페이지. 🎜🎜기본적으로 상대 링크는 자동으로 완성되어 완전한 URL로 변환됩니다. 🎜🎜5. submit($URI,$formvars)🎜🎜이 메소드는 $URL에 지정된 링크 주소로 확인 양식을 보냅니다. $formvars는 양식 매개변수를 저장하는 배열입니다. 🎜🎜6. submittext($URI,$formvars)🎜🎜이 메서드는 submit()과 유사하지만 유일한 차이점은 이 메서드가 HTML 태그 및 기타 관련 없는 데이터만 반환한다는 것입니다. 로그인 웹페이지의 텍스트 콘텐츠입니다. 🎜🎜7. submitlinks($URI)🎜🎜이 방법은 submit()과 유사하지만 유일한 차이점은 이 방법은 HTML 태그 및 기타 관련 없는 데이터를 제거하고 웹의 링크만 반환한다는 것입니다. 페이지. 🎜🎜기본적으로 상대 링크는 자동으로 완성되어 완전한 URL로 변환됩니다. 🎜🎜🎜Snoopy 컬렉션 클래스 속성: (기본값은 대괄호 안에 있음)🎜🎜🎜🎜$host 연결된 호스트 🎜🎜$port 연결된 포트 🎜🎜$proxy_host 사용된 프록시 호스트(있는 경우) 🎜🎜$proxy_port 사용된 프록시 호스트 포트 , 있는 경우 🎜🎜$agent 사용자 에이전트 위장(Snoopy v0.1) 🎜🎜$referer 소스 정보(있는 경우) 🎜🎜$cookies 쿠키(있는 경우) 🎜🎜$rawheaders 기타 헤더 정보(있는 경우) 🎜🎜$maxredirs 최대 수 리디렉션, 0=허용되지 않음 (5)🎜🎜$offsiteok 오프사이트 리디렉션을 허용할지 여부(true)🎜🎜$expandlinks 전체 주소에 대한 모든 링크를 완료할지 여부(true)🎜🎜$user 인증 사용자 이름, if any 🎜🎜$pass 인증 사용자 이름(있는 경우) 🎜🎜$accept http 허용 유형(image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*)🎜🎜$error 오류가 보고되는 위치 , if any🎜🎜$response_code 서버에서 반환된 응답 코드🎜🎜$headers 서버에서 반환된 헤더 정보🎜🎜$maxlength 반환된 가장 긴 데이터 길이🎜🎜 $read_timeout 읽기 작업 시간 초과(PHP 4 Beta 4+ 필요) 설정 시간 초과 없이 0으로 설정 🎜🎜$timed_out 읽기 작업 시간이 초과되면 이 속성은 true를 반환합니다(PHP 4 Beta 4+ 필요) 🎜🎜$maxframes는 추적을 허용합니다. 최대 프레임 수🎜🎜$status 캡처된 http🎜의 상태 🎜$temp_dir 웹 서버가 쓸 수 있는 임시 파일 디렉터리(/tmp)🎜🎜$curl_path cURL 바이너리가 있는 디렉터리, cURL 바이너리가 없으면 false로 설정🎜🎜 🎜다음은 예시입니다. 🎜🎜 코드는 다음과 같습니다.
🎜
<?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 //返回报错信息
?>
🎜지정된 URL의 콘텐츠를 가져옵니다🎜🎜코드는 다음과 같습니다.
🎜rrreee🎜양식 제출🎜🎜코드는 다음과 같습니다.
🎜 rrreee🎜이제 제출된 양식으로 많은 일을 할 수 있습니다. 다음으로 IP와 브라우저를 위장해 보겠습니다🎜🎜🎜브라우저를 위장해 보세요🎜🎜🎜코드는 다음과 같습니다.
🎜rrreee🎜됩니다. 세션을 위장하고, 브라우저를 위장하고, IP를 위장할 수 있다는 사실을 알게 되었습니다. 하하. 🎜🎜🎜예: 🎜인증번호와 IP를 인증하여 투표하면 연속적으로 투표할 수 있습니다. 🎜🎜🎜ps: 🎜여기에서 IP를 위장하는 것은 실제로는 http 헤더를 위장하는 것이므로 REMOTE_ADDR를 통해 얻은 IP는 위장할 수 없으나 http 헤더를 통해 얻은 IP(프록시를 방지할 수 있음) 종) 자신의 IP를 만들 수 있습니다. 🎜🎜코드를 확인하는 방법에 대해 간단히 이야기하자면: 🎜🎜먼저 일반 브라우저를 사용하여 페이지를 보고, 인증 코드에 해당하는 세션 ID를 찾은 다음, 세션 ID와 인증 코드 값을 기록한 다음 스누피를 사용하여 위조합니다. . 🎜🎜🎜원칙: 🎜세션ID가 동일하기 때문에 획득한 인증코드는 처음 입력한 인증코드와 동일합니다. 🎜🎜때때로 우리는 더 많은 것을 가짜로 만들어야 할 수도 있습니다. 스누피는 우리를 위해 그것을 완전히 생각했습니다.🎜rrreee🎜🎜관련 비디오 추천: 🎜초보부터 마스터까지 PHP 프로그래밍🎜🎜🎜

위 내용은 PHP 스누피의 사용법은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.