PHP collection class snoopy detailed introduction (snoopy tutorial) _ php instance-php Tutorial

Source: Internet
Author: User
This article mainly introduces the PHP snoopy collection class in detail, and the PHP collection class snoopy detailed usage tutorial. if you need a friend, refer to Snoopy as a php class to simulate the browser function, you can obtain the webpage content and send a form to develop some collection programs and thief programs. This article describes the use of snoopy in detail.

Some features of Snoopy:
Fetch the webpage content
Fetchtext
Capture the link of the web page, form fetchlinks fetchform
Support proxy Host
Supports basic user name/password verification
Supports setting user_agent, referer, cookies, and header content)
Supports browser redirection and can control the depth of redirection.
Extends links on a webpage to high-quality URLs (default)
Submit data and obtain the returned value
Supports tracking HTML frameworks
Supports sending cookies during redirection
The php4 and above are required. because it is a php class, it is the best choice when the server does not need to be expanded and curl is not supported,

Snoopy class method and example:

Fetch ($ URI)
This method is used to capture the content of a webpage.
$ URI is the URL of the webpage to be crawled.
The captured results are stored in $ this-> results.
If you are capturing a framework, Snoopy will track each frame and store it in an array, and then save it to $ this-> results.

Fetchtext ($ URI)
This method is similar to fetch (). The only difference is that this method will remove HTML tags and other irrelevant data and only return the text content in the webpage.

Fetchform ($ URI)
This method is similar to fetch (). The only difference is that this method will remove the HTML tag and other irrelevant data and only return the form content (form) in the webpage ).

Fetchlinks ($ URI)
This method is similar to fetch (). The only difference is that this method will remove HTML tags and other irrelevant data and only return links in the webpage ).
By default, the relative link is automatically completed and converted to a complete URL.

Submit ($ URI, $ formvars)
This method sends a confirmation form to the URL specified by $ URL. $ Formvars is an array that stores form parameters.

Submittext ($ URI, $ formvars)
This method is similar to submit (). The only difference is that this method will remove HTML tags and other irrelevant data and only return the text content on the webpage after login.

Submitlinks ($ URI)
This method is similar to submit (). The only difference is that this method will remove HTML tags and other irrelevant data and only return links in the webpage ).
By default, the relative link is automatically completed and converted to a complete URL.


Snoopy collection attributes: (the default value is in brackets)

$ HostConnected host
$ PortConnected Port
$ Proxy_hostProxy host, if any
$ Proxy_portProxy Host Port used, if any
$ AgentUser proxy disguise (Snoopy v0.1)
$ RefererInformation of the road, if any
$ CookiesIf yes
$ RawheadersOther header information, if any
$ MaxredirsMaximum number of redirects, 0 = not allowed (5)
$ OffsiteokWhether or not to allow redirects off-site. (true)
$ ExpandlinksWhether to add all links to the full address (true)
$ UserAuthentication username, if any
$ PassAuthentication username, if any
$ AcceptHttp accept type (image/gif, image/x-xbitmap, image/jpeg, image/pjpeg ,*/*)
$ ErrorWhere is the error reported? if Yes
$ Response_codeResponse code returned from the server
$ HeadersHeader information returned from the server
$ MaxlengthMaximum length of returned data
$ Read_timeoutRead operation timeout (requires PHP 4 Beta 4 +) is set to 0 to no timeout
$ Timed_outIf a read operation times out, this attribute returns true (requires PHP 4 Beta 4 +)
$ MaxframesMaximum number of frames that can be tracked
$ StatusHttp status captured
$ Temp_dirTemporary file directory (/tmp) that can be written by the web server)
$ Curl_pathCURL binary Directory. if there is no cURL binary, set it to false.

The following is an example:

The code is as follows:


Include "Snoopy. class. php ";
$ Snoopy = new Snoopy;

$ Snoopy-> proxy_host = "http://www.php.net ";
$ Snoopy-> proxy_port = "80 ";

$ Snoopy-> agent = "(compatible; MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98 )";
$ Snoopy-> referer = "http://www.php.net ";

$ Snoopy-> cookies ["SessionID"] = 238472821323489l;
$ 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 ("http://www.php.net "))
{
Echo"

".htmlspecialchars($snoopy->results)."
\ N ";
}
Else
Echo "error fetching document:". $ snoopy-> error. "\ n ";

Obtains the content of a specified url.

The code is as follows:

<? Php
$ Url = "http://www.php.net ";
Include ("snoopy. php ");
$ Snoopy = new Snoopy;
$ Snoopy-> fetch ($ url); // get all content
Echo $ snoopy-> results; // display the result
// Optional
$ Snoopy-> fetchtext // get text content (remove html code)
$ Snoopy-> fetchlinks // Obtain the link
$ Snoopy-> fetchform // Obtain the form
?>

Form submission

The code is as follows:

<? Php
$ Formvars ["username"] = "admin ";
$ Formvars ["pwd"] = "admin ";
$ Action = "http://www.php.net"; // form submission address
$ Snoopy-> submit ($ action, $ formvars); // $ formvars is the submitted array
Echo $ snoopy-> results; // obtain the result returned after the form is submitted.
// Optional
$ Snoopy-> submittext; // after submission, only the html-removed text is returned.
$ Snoopy-> submitlinks; // after submission, only the link is returned.
?>


Since the form has been submitted, we can do a lot of things. next we will disguise the ip address and the browser.

Camouflage browser

The code is as follows:

<? Php
$ Formvars ["username"] = "lanfengye ";
$ Formvars ["pwd"] = "lanfengye ";
$ Action = "http://www.php.net ";
Include "snoopy. php ";
$ Snoopy = new Snoopy;
$ Snoopy-> cookies ["PHPSESSID"] = 'fc0000b1918bd522cc863f000090e6fff7 '; // disguise sessionid
$ Snoopy-> agent = "(compatible; MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)"; // camouflage browser
$ Snoopy-> referer = "http://www.php.net"; // camouflage source page address http_referer
$ Snoopy-> rawheaders ["Pragma"] = "no-cache"; // The http header information of the cache
$ Snoopy-> rawheaders ["X_FORWARDED_FOR"] = "127.0.0.101"; // disguise ip address
$ Snoopy-> submit ($ action, $ formvars );
Echo $ snoopy-> results;
?>

In the past, we could disguise session as a web browser and ip address, and haha could do a lot of things.
For example, you can vote for an ip address with a verification code.
Ps: Here, the disguised ip address is actually an http header, so the ip address obtained through REMOTE_ADDR cannot be disguised,
Instead, ip addresses obtained through http headers (which can prevent proxies) can be created by themselves.
Let's briefly describe how to use the verification code:
First, use a normal browser to view the page and find the sessionid corresponding to the verification code,
Write down sessionid and verification code value at the same time,
Next, we will use snoopy to forge.
Principle: because it is the same sessionid, the verification code obtained is the same as the one entered for the first time.

Sometimes we may need to forge more things, and snoopy comes to mind completely for us.

<? Php
$ Snoopy-> proxy_host = "http://www.php.net ";
$ Snoopy-> proxy_port = "8080"; // use a proxy
$ Snoopy-> maxredirs = 2; // redirect times
$ Snoopy-> expandlinks = true; // whether to complete the link is often used during Collection
// For example, the link for/images/taoav.gif can be changed to its full link http://www.php.net/images/taoav.gif </a>
$ Snoopy-> maxframes = 5 // maximum number of frames allowed
// When capturing the frame, $ snoopy-> results returns an array.
$ Snoopy-> error // error message returned
?>

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.