curl模擬登入技術用PHP開發模擬瀏覽器的套用,首選技術是CURL函式館。但是php官方提供的技術文檔資料很少,相關的示例代碼也很少。最近由於項目需要,開發了一系列免費信箱的導出用戶自己聯繫人的功能,包括國內外知名郵 箱,163,sina,sohu,yahoo,hotmail,gmail,qq mail等。還開發了一些方便用戶嵌入代碼到各大部落格,個人門戶的套用。比如嵌入flash代碼到Qzone,網易的blog,百度的個人門戶等。當然,最原始的技術手段是採用fsockopen函式,然後深入去學習http協定,寫出標準的http頭信息,也是可以完成開發的。不過麻煩的地方就出在標準。如果對http協定標準認識不深,經常會因碰到少了一個空格或者少了一個換行符號而debug很久。模擬瀏覽器登入套用開發,最關鍵的地方是突破登入驗證。CURL技術不只支持http,還支持https。區別就在多了一層SSL加密傳輸。如果是要登入https網站,php記得要支持openssl。還是先拿一個例子來分析。
//用戶名$login=‘username’;//密碼$password=‘password’;//163的用戶登入地址
$url=“https://reg.163.com/logins.jsp”;
//post要提交的數 $fields= “verifycookie=1&style=16&product=mail163&username=”.$login.”&password=”.$password.”&selType=jy&remUser=&secure=on&%B5%C7%C2%BC%D3%CA%CF%E4=%B5%C7%C2%BC%D3%CA%CF%E4″;
//用來存放cookie的檔案$cookie_file=dirname(__FILE__).”/cookie.txt”;
//啟動一個CURL會話$ch=curl_init();
//要訪問的地址curl_setopt($ch,CURLOPT_URL,$url);
//對認證證書來源的檢查,0表示阻止對證書的合法性的檢查。curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
//從證書中檢查SSL加密算法是否存在curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,1);
//模擬用戶使用的瀏覽器,在HTTP請求中包含一個”user-agent”頭的字元串。curl_setopt($ch,CURLOPT_USERAGENT,“Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.0)”);
//傳送一個常規的POST請求,類型為:application/x-www-form-urlencoded,就像表單提交的一樣。curl_setopt($ch,CURLOPT_POST,1);
//要傳送的所有數據,如果要傳送一個檔案,需要一個@開頭的檔案名稱curl_setopt($ch,CURLOPT_POSTFIELDS,$fields);
//連線關閉以後,存放cookie信息的檔案名稱稱curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
//包含cookie信息的檔案名稱稱,這個cookie檔案可以是Netscape格式或者HTTP風格的header信息。curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file);
//設定curl允許執行的最長秒數//curl_setopt($ch,CURLOPT_TIMEOUT,6);
//獲取的信息以檔案流的形式返回,而不是直接輸出。curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
//執行操作$result=curl_exec($ch);if($result==NULL){echo“Error:“;echocurl_errno($ch).”–”.curl_error($ch).”“;}
//關閉CURL會話curl_close($ch);