php 스누피 사용법: 1. [fetch($URI)] 웹 페이지의 콘텐츠를 캡처합니다. 2. [fetchtext($URI)] HTML 태그 및 기타 관련 없는 데이터를 제거합니다. ] 웹 페이지의 양식 내용을 반환합니다.
이 튜토리얼의 운영 환경: 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 "".htmlspecialchars($snoopy->results)."\n"; } else echo "error fetching document: ".$snoopy->error."\n";로그인 후 복사
获取指定url内容
代码如下:
fetch($url); //获取所有内容 echo $snoopy->results; //显示结果 //可选以下 $snoopy->fetchtext //获取文本内容(去掉html代码) $snoopy->fetchlinks //获取链接 $snoopy->fetchform //获取表单 ?>
表单提交
代码如下:
表单提交地址 $snoopy->submit($action,$formvars);//$formvars为提交的数组 echo $snoopy->results; //获取表单提交后的 返回的结果 //可选以下 $snoopy->submittext; //提交后只返回 去除html的 文本 $snoopy->submitlinks;//提交后只返回 链接 ?>
既然已经提交的表单 那就可以做很多事情 接下来我们来伪装ip,伪装浏览器
伪装浏览器
代码如下:
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
프레임을 스크랩하는 경우 스누피는 각 프레임을 추적하여 배열에 저장한 다음 $this->result에 저장합니다.
2.fetchtext($URI)
이 메서드는 fetch()와 유사합니다. 유일한 차이점은 이 메서드는 HTML 태그 및 기타 관련 없는 데이터를 제거하고 텍스트 내용만 반환한다는 것입니다. 웹페이지.
4.3.
fetchform($URI)
이 메서드는 fetch()와 유사합니다. 유일한 차이점은 이 메서드가 HTML 태그 및 기타 관련 없는 데이터를 제거하고 양식 콘텐츠( 형태 ).
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로 설정 다음은 예시입니다. 코드는 다음과 같습니다.
proxy_host = "https://www.jb51.net"; $snoopy->proxy_port = "8080"; //使用代理 $snoopy->maxredirs = 2; //重定向次数 $snoopy->expandlinks = true; //是否补全链接 在采集的时候经常用到 // 例如链接为 /images/taoav.gif 可改为它的全链接 https://www.jb51.net/images/taoav.gif $snoopy->maxframes = 5 //允许的最大框架数 //注意抓取框架的时候 $snoopy->results 返回的是一个数组 $snoopy->error //返回报错信息 ?>
REMOTE_ADDR
를 통해 얻은 IP는 위장할 수 없으나 http 헤더를 통해 얻은 IP(프록시를 방지할 수 있음) 종) 자신의 IP를 만들 수 있습니다. 코드를 확인하는 방법에 대해 간단히 이야기하자면: 먼저 일반 브라우저를 사용하여 페이지를 보고, 인증 코드에 해당하는 세션 ID를 찾은 다음, 세션 ID와 인증 코드 값을 기록한 다음 스누피를 사용하여 위조합니다. . 원칙: 세션ID가 동일하기 때문에 획득한 인증코드는 처음 입력한 인증코드와 동일합니다. 때때로 우리는 더 많은 것을 가짜로 만들어야 할 수도 있습니다. 스누피는 우리를 위해 그것을 완전히 생각했습니다.rrreee관련 비디오 추천: 초보부터 마스터까지 PHP 프로그래밍
위 내용은 PHP 스누피의 사용법은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!