當前位置:首頁 » 編程語言 » php模擬登錄

php模擬登錄

發布時間: 2022-03-01 21:03:26

php模擬登陸抓取數據,無法用正則表達式匹配中文

header()函數是輸出到HTTP頭,和你這個問題是沒有關系的。

真正相關的,是你的源代碼的編碼方式。
我舉個例子,若源代碼文件是採用UTF8編碼,那麼你在抓取到頁面後,先要進行編碼轉換到UTF8!
如,使用iconv:
若抓取到的頁面存放在$contents中:那麼運行$contents=iconv('gb2312','utf-8//IGNORE',$contents);//參數中的IGNORE是忽略錯誤
這樣再進行正則匹配才行。
當然匹配出來的結果也需要用UTF8來正常顯示,所以header()那部分就不用去掉了。

Ⅱ 怎樣用php中的curl模擬登陸

/**
* 模擬登錄
*/

//初始化變數
$cookie_file = "tmp.cookie";
$login_url = "http://xxx.com/logon.php";
$verify_code_url = "http://xxx.com/verifyCode.php";

echo "正在獲取COOKIE...\n";
$curlj = curl_init();
$timeout = 5;
curl_setopt($curl, CURLOPT_URL, $login_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($curl,CURLOPT_COOKIEJAR,$cookie_file); //獲取COOKIE並存儲
$contents = curl_exec($curl);
curl_close($curl);

echo "COOKIE獲取完成,正在取驗證碼...\n";
//取出驗證碼
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $verify_code_url);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$img = curl_exec($curl);
curl_close($curl);

$fp = fopen("verifyCode.jpg","w");
fwrite($fp,$img);
fclose($fp);
echo "驗證碼取出完成,正在休眠,20秒內請把驗證碼填入code.txt並保存\n";
//停止運行20秒
sleep(20);

echo "休眠完成,開始取驗證碼...\n";
$code = file_get_contents("code.txt");
echo "驗證碼成功取出:$code\n";
echo "正在准備模擬登錄...\n";

$post = "username=maben&pwd=hahahaha&verifycode=$code";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
$result=curl_exec($curl);
curl_close($curl);

//這一塊根據自己抓包獲取到的網站上的數據來做判斷
if(substr_count($result,"登錄成功")){
echo "登錄成功\n";
}else{
echo "登錄失敗\n";
exit;
}

Ⅲ 哪位達人會用PHP的curl模擬登陸百度

模擬瀏覽器登陸應用開發,最關鍵的地方是突破登陸驗證。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&proct=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; MSIE 6.0; Windows NT 5.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:<br>";
echo curl_errno($ch) . " - " . curl_error($ch) . "<br>";
}

// 關閉CURL會話
curl_close($ch);上 面這個例子相對簡單,因為用戶名和密碼可以明文傳輸,而且登陸也不需要驗證碼。qq.com的模擬登陸相對就麻煩多了,首先要突破驗證碼這關,然後由於 QQ密碼是經過javascript加密後傳輸的,登陸界面也要模擬出來,下一篇文章再繼續深入談談QQ的模擬登陸。

參考資料:
CURL詳解 http://www.21andy.com/blog/20080507/1095.html
Tags: curl,模擬登陸wuzuquan 2008/07/18 09:40您好,我現在在做一個模擬yahoo登陸的php程序,因為yahoo的密碼是經過javascript加密的,而且在加密過程中引用了一個網頁隨機生成的字元串challenge,這個字元串在每次訪問網頁的時候都不一樣。
如果我採用curl來模擬登陸,過程如下:
先curl_init()初始化一個curl連接,設置相關選項後,curl_exec();然後利用採集功能得到challenge的值,經過加密計算出加密後的密碼。再來一次curl_exec,將用戶名,加密密碼等post出去。
可是這樣做採集到的challenge永遠都是過時的,這該怎麼解決呢?
希望不吝賜教,我的郵箱是[email protected]

Ⅳ PHP curl 模擬登錄

302是跳轉,你可以繼續跟進跳轉之後的頁面

另外僅從這段代碼來看,沒看到你給全局變數$cookie賦值的地方

Ⅳ 如何通過php程序模擬用戶登錄

模擬用戶可以用php的curl的post,例如
$url = "http://www.uzuzuz.com";
$post_data = array ("username" => "uzuzuz","password" => "12345");

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// post數據
curl_setopt($ch, CURLOPT_POST, 1);
// post的變數
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$output = curl_exec($ch);
curl_close($ch);
//列印獲得的數據
print_r($output);

具體參考:http://www.uzuzuz.com/article/4.html

Ⅵ php curl模擬登錄網站-微博

可以的。

希望我的回答可以幫到你,有什麼不懂可以追問。

Ⅶ php模擬登陸知乎

這種模擬登陸其實很簡單,php的話主要用curl來實現。仔細研究一下你要抓的站具體是怎麼實現用戶登錄的,可以用wireshark或者burpsuite(建議用後者)抓包看看整個過程都有那幾次請求,每次請求都發送了哪些數據,構造好發給他就可以實現登錄了。
之後獲取個人信息就很容易了,找找php解析html庫,或者最簡單粗暴的就是字元串截取函數加正則表達式,把你想要的數據提取出來就好了。
對於你給出的這種驗證碼屬於非常容易識別的驗證碼了,基本的識別原理參看使用Canvas進行驗證碼識別。
當然比較蛋疼的問題就是網頁編碼問題,經常爬過來全是亂碼,網上找找看轉碼的方法,都試一下,這是一門玄學,能不能成功看你人品和耐心吧。

Ⅷ 我想用PHP的curl做一個帶驗證碼的模擬登陸,可是我不太清楚header中應包含什麼

模擬瀏覽器登陸應用開發,最關鍵的地方是突破登陸驗證。CURL技術不只支持http,還支持https。區別就在多了一層SSL加密傳輸。
如果是要登陸https網站,php記得要支持openssl。還是先拿一個例子來分析。

Ⅸ php模擬登錄教務處

$login_url='http://iqun.com/bbs/logging.php?username=用戶名&password=密碼';
$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);
=============
類似這樣的,你直接搜 curl模擬登陸,會有很多例子的。

Ⅹ PHP怎樣模擬登錄教務系統最好有源碼實例。

前幾天剛實現了一個,難點主要有3塊:

1:http頭部模擬
2:在使用curl做POST的時候, 當要POST的數據大於1024位元組的時候, curl並不會直接就發起POST請求, 而是會分為倆步,
http://www.laruence.com/2011/01/20/1840.html
3:post的數據,有幾個欄位是用js計算出的,需要用php模擬出

附:curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($data));

熱點內容
輸入url或伺服器地址 發布:2025-07-16 07:47:46 瀏覽:293
iphone便捷訪問有什麼用 發布:2025-07-16 07:46:59 瀏覽:841
16進制的字元串java 發布:2025-07-16 07:39:54 瀏覽:437
一加手機安卓11怎麼分屏 發布:2025-07-16 07:32:35 瀏覽:85
vivo方舟編譯器app 發布:2025-07-16 07:31:56 瀏覽:631
八萬落地大眾高配置有哪些車 發布:2025-07-16 07:22:26 瀏覽:134
騷年直播密碼多少 發布:2025-07-16 07:20:55 瀏覽:918
率土之濱太守車怎麼配置軍團 發布:2025-07-16 07:14:36 瀏覽:697
k2的演算法 發布:2025-07-16 07:14:35 瀏覽:252
精雕編程員 發布:2025-07-16 07:13:58 瀏覽:269