This article mainly introduces the method of remote login to Zhengfang Educational Affairs System using PHP based on curl background, and analyzes the operation skills of PHP using curl and cookies to achieve remote login in the form of examples. Friends who need it can refer to it
This article describes the method of remotely logging in to the Zhengfang Academic Affairs System based on PHP curl background. I share it with you for your reference. The details are as follows:
I have been thinking about how to solve this problem since last year. This year I finally figured it out, but the verification code must be filled in.
If you can grab tickets like 360, which automatically recognizes the verification code, then you’ll be fine. No more nonsense. Back to the topic
We need to use CURL here.
Design idea: First log in to the page to obtain COOKIES, and then use the cookies to find the server for the verification code. Finally provide all the information the server needs.
(This kind of thinking is to completely simulate the browser accessing the page, and the fundamental difference is that it is a human versus a machine)
public function index(){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); //填对于的URL就可以了 curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); //主要cookie的路径,本保存页面cookie curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //返回结果自动输出 $response = curl_exec($ch); curl_close($ch); }
Visit the homepage of the Zhengfang Academic Affairs System. The first step is to get the HTML in the page, and the second step is to get the cookies.
Anything else I want to ask? What is the use of getting HTML?
If you carefully observe the HTML on the homepage of the educational administration system, you will find that there are many hidden fields in it, and these fields change.
So you might as well get all the HTML and parse it, and then extract all the required fields
HTML structure
Do you see that? Hidden fields are necessary to submit data, and there cannot be too many.
Page effect
Next I want to address the most important question, how to get the verification code?
At first, I just wanted to go directly to
<img src="xxxx/CheckCode.aspx" />
, wouldn’t that be enough? Although the verification code comes out, it does not belong to you, so when you log in remotely, you will be told that the verification code is wrong
. So how do you get your own verification code? At this time, what naturally comes to mind is cookies.
How the server distinguishes whether the browser request is for the same person depends on the sessionid in the cookies
This way. If you take the cookies you obtained on the homepage and ask the server for your verification code, will it give an error?
public function getImg() { $url = "http://xxxx/CheckCode.aspx"; $filedir = SITE_PATH."/TMP/Cookies"; $cookie_file = $filedir."/cookie.txt"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); // curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_TIMEOUT, "10"); header("Content-type:image/gif"); //这个视不同图片格式不一样,请注意 echo curl_exec($ch); curl_close($ch); }
Then call this method on other pages and you can get the verification code.
CURL's PHP request and the PHP sent by your browser belong to two different threads, so their cookies are different and shared.
You can log in this way, but don’t think that you can operate all functions after logging in this way, then you are wrong. There is one more small detail. .
Summary: The above is the entire content of this article, I hope it will be helpful to everyone's study.
Related recommendations:
Summary of PHP interview questions
About think PHP deployment nginx configuration
The above is the detailed content of PHP method to realize background remote login to Zhengfang Educational Affairs System based on curl. For more information, please follow other related articles on the PHP Chinese website!