Home >Backend Development >PHP Tutorial >PHP simulates logging into DZ forum through curl_PHP tutorial
This article will introduce to you about Php CURL simulated login to the forum and collect data examples. If you are interested in using the curl simulated login function Interested parties can enter for reference.
Libcurl also supports HTTPS authentication, HTTP POST, HTTP PUT, FTP upload (this can also be completed through PHP's FTP extension), HTTP form-based upload, proxy, cookies and username and password authentication.
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
$discuz_url = 'http://www.jb51.net/';//Forum address $login_url = $discuz_url .'login.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'; //Safety 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); ?> |
The above is the entire content of this article, I hope you all like it.