當前位置:首頁 » 文件傳輸 » curl模擬設備訪問
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

curl模擬設備訪問

發布時間: 2022-07-14 22:19:54

㈠ 請教php curl模擬get請求與直接在瀏覽器訪問網址有什麼區別

curl方式你可以認為是服務端的ajax請求,服務端可以獲取curl的結果,然後處理自己的業務,至於直接在瀏覽器訪問,就不用說了,直接顯示出請求的結果

㈡ 怎樣用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可以模擬IP v6來源訪問么

不可以的,連接IP本身是無法模擬的,除非你採集的網站是從應用層來限制IP,比如X-Forwarded-For,但是對IP限制基本上都是tcp層。

㈣ 哪位達人會用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]

㈤ 怎麼用curl模擬游覽器UA[php]

具體怎麼寫,我一時寫不出來了,因為要實現對一站點頻繁的訪問, 怕被封IPfunction curl_string ($url,$timeout = 3,$proxy=1){ $ua = array(

㈥ 我用PHP CURL 模擬訪問為什麼統計不到

你所說的「其中一個人關閉了網站」是一個很明顯的錯誤,網站的來訪者所關閉的不是「網站」,只是他自己的瀏覽器。
從 Web 服務的機制上來說,伺服器只是接收到對某個網頁的請求後把相應的 HTML 格式的內容(可能包括 JavaScript程序)發送給請求者以後就關閉連接,至於瀏覽器端的用戶是什麼時候關閉瀏覽器(或者說是轉移去查看別的網站的網頁去了)伺服器端是得不到任何信息的。
PHP、ASP、JSP 之類的網頁訪問只是伺服器在發送 HTML 格式的內容之前需要先執行一下相應的文件里的程序,得到 HTML 格式的內容之後再發送而已,原理上還是發送完就關閉與請求者的連接。
伺服器能得到的信息是接收來訪者發來的網頁請求信息的時候隨同而來的IP地址,至於這個IP地址對應的用戶什麼時候跳轉去看別的網站的網頁去了伺服器得不到任何信息。在你的 PHP 程序中,可以把得到一個來訪者的IP地址的時候就給作為一個累加器用的跨網頁文件跨不同來訪者共享的變數添加1,20分鍾之內沒再接收到那個IP地址發來的請求就將累加器減1,這樣,你把那個累加器內容顯示出來就能反映你的網站在最近20分鍾內有多少個IP來訪問過,這個數就近似地反映了你的網站「在線人數」。