This article will introduce to you students about Php CURL simulated login forum and data collection examples. If you are interested in using curl simulated login function, you can enter for reference.
To simulate a browser accessing a website, the first step is to learn to observe how the browser sends http messages and what kind of content the website server returns to the browser. I recommend installing httpwatch software developed by foreigners. It is best to get a cracked version, otherwise some functions will not be available. After this software is installed, it is embedded in IE. Start Record, enter the URL in the address bar and press Enter. It will scan out all the communications between the browser and the server, giving you a clear view. The use of this software will not be introduced in this article.
The most critical aspect of simulating browser login application development is to break through login verification. CURL technology not only supports http, but also https. The difference is that there is an additional layer of SSL encrypted transmission. If you want to log in to an https website, PHP must support openssl. Let’s take an example to analyze first.
The code is as follows | Copy code | ||||
$login_url = $discuz_url . 'logging.php?action=login'; //Login page address<🎜> <🎜>$post_fields = array(); //The following two items do not need to be modified $post_fields['loginfield'] = 'username'; $post_fields['loginsubmit'] = 'true'; //Username and password must be filled in $post_fields['username'] = 'tianxin'; $post_fields['password'] = '111111'; //Security questions $post_fields['questionid'] = 0; $post_fields['answer'] = ''; //@todo verification code $post_fields['seccoverify'] = '';<🎜> <🎜>//Get form FORMHASH $ch = curl_init($login_url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $contents = curl_exec($ch); curl_close($ch); preg_match('/ if (!empty($matches)) { $formhash = $matches[1]; } else { Die('Not found the forumhash.'); } //POST data, obtain COOKIE, and put the cookie file in the temp directory of the website $cookie_file = tempnam('./temp', 'cookie'); $ch = curl_init($login_url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_exec($ch); curl_close($ch); //After getting the key cookie file, you can use the cookie file to simulate posting. Fid is the column ID of the forum $send_url = $discuz_url . "post.php?action=newthread&fid=2"; $ch = curl_init($send_url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); $contents = curl_exec($ch); curl_close($ch); //The hash code here is different from the hash code in the login window. The hidden here has an additional id attribute preg_match('/ if (!empty($matches)) { $formhash = $matches[1]; } else { Die('Not found the forumhash.'); } $post_data = array(); //Post title $post_data['subject'] = 'test2'; //Post content $post_data['message'] = 'test2'; $post_data['topicsubmit'] = "yes"; $post_data['extra'] = ''; //Post tag $post_data['tags'] = 'test'; //The hash code of the post, this is very critical! If this hash code is missing, discuz will warn you that the page you came from is incorrect $post_data['formhash'] = $formhash; $ch = curl_init($send_url); curl_setopt($ch, CURLOPT_REFERER, $send_url); //Disguise REFERER curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $contents = curl_exec($ch); curl_close($ch); //Clean cookie files unlink($cookie_file); ?> |
CURL实现网站模拟登陆
代码如下
|
复制代码 | ||||
http://www.bkjia.com/PHPjc/632770.html