php模擬登錄詳解(php模擬登錄抓取內容)

本文目錄一覽:

PHP模擬用戶登錄模塊

html(login.html)

!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “”

html xmlns=””

head

meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ /

title用戶登錄頁面/title

script language=”javascript”

function check(){

var user = document.getElementById(“user”);

var passwd = document.getElementById(“passwd”);

if(user.value.length == 0){

alert(“用戶名不能為空!”);

return false;

}

if(passwd.value.length  6){

alert(“密碼至少6位!”);

return false;

}

}

/script

/head

body

div style=” width:300px; height:200px; margin:auto auto;”

form name=”login” method=”post” action=”check_login.php”

table width=”300″ height=”200″ cellpadding=”0″ cellspacing=”0″ border=”1px”

tr

td height=”70″用戶名:/td

tdinput id=”user” name=”username” type=”text” //td

/tr

tr

td height=”78″密碼/td

tdinput id=”passwd” name=”password” type=”password” //td

/tr

tr

td colspan=”2″centerinput type=”submit” value=”登錄” onclick=”return check();” /input type=”reset” value=”重置” //center/td

/tr

/table

/form

/div

/body

/html

php(check_login.php)

?php

/*

* 驗證登錄頁

* 2015-6-6

* 預設用戶名admin,密碼1234567,

*  如果相同則顯示登錄成功!,錯誤則顯示用戶或密碼錯誤;

*/

$username = $_POST[‘username’];

$password = $_POST[‘password’];

if($username == ‘admin’  $password ==’1234567′){

echo “登錄成功!”;

}else{

echo “用戶或密碼錯誤”;

}

?

php模擬登陸知乎

想要爬取知乎,首先要解決的就是登錄問題,知乎登錄還是比較簡單的,這裡有一個示例:

而爬取,不過是對登錄成功之後的得到的cookie進行再次利用,使用

curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file);

即可。

上面示例最後一步獲取登錄成功後的首頁就做了示範。

至於爬取過程對鏈接(文章鏈接、專欄鏈接等)的解析,需要針對來處理了。

解析可以用phpQuery,也可以用正則。

你可以參考我這個全站爬取程序:

更多關於PHP cURL的內容,請參考《PHP cURL實現模擬登錄與採集使用方法詳解》

更深入討論可以通過我的博客找我。

怎樣用php中的curl模擬登陸

在我的博客《PHP cURL模擬登錄與採集分析過程詳解》做了詳細的介紹,步驟有:

1. 訪問目標網站

2. 打開Firebug(快捷鍵:F12)

3. 清除【Cookie】

4. 重新訪問目標網站

5. 設置【網絡】為[保持]狀態

6. 填寫表單,提交登錄請求

7. 利用【網絡】,分析提交信息

8. 複製請求的cURL命令

9. 分析命令傳輸的參數與Cookie和前面頁面響應內容的關聯性

10. 如果遇到Cookie和響應內容都無法查找到的參數,Ctrl+S保存當前頁面為全部,利用文本搜索該參數的位置

11. 利用cURL命令組裝模擬登錄程序

詳情請參考博客內容:

關於php模擬登錄

所謂登錄,一般是POST或者GET一些數據到服務器,由服務器進行驗證。

CURL就是HTTP協議的封裝,能個代替瀏覽器發送POST或者GET請求到web server,然後再接收web server的應答數據。

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

模擬用戶可以用php的curl的post,例如

$url = “”;

$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);

具體參考:

php curl 模擬登錄並獲取數據實例詳解

PHP的curl()在抓取網頁的效率方面是比較高的,而且支持多線程,而file_get_contents()效率就要稍低些,當然,使用curl時需要開啟下curl擴展。

代碼實戰

先來看登錄部分的代碼:

//模擬登錄

function

login_post($url,

$cookie,

$post)

{

$curl

=

curl_init();//初始化curl模塊

curl_setopt($curl,

CURLOPT_URL,

$url);//登錄提交的地址

curl_setopt($curl,

CURLOPT_HEADER,

0);//是否顯示頭信息

curl_setopt($curl,

CURLOPT_RETURNTRANSFER,

0);//是否自動顯示返回的信息

curl_setopt($curl,

CURLOPT_COOKIEJAR,

$cookie);

//設置Cookie信息保存在指定的文件中

curl_setopt($curl,

CURLOPT_POST,

1);//post方式提交

curl_setopt($curl,

CURLOPT_POSTFIELDS,

http_build_query($post));//要提交的信息

curl_exec($curl);//執行cURL

curl_close($curl);//關閉cURL資源,並且釋放系統資源

}

函數login_post()首先初始化curl_init(),然後使用curl_setopt()設置相關選項信息,包括要提交的url地址,保存的cookie文件,post的數據(用戶名和密碼等信息),是否返回信息等等,然後curl_exec執行curl,最後curl_close()釋放資源。注意PHP自帶的http_build_query()可以將數組轉換成相連接的字符串。

接下來如果登錄成功後,我們要獲取登錄成功後的頁面信息。

//登錄成功後獲取數據

function

get_content($url,

$cookie)

{

$ch

=

curl_init();

curl_setopt($ch,

CURLOPT_URL,

$url);

curl_setopt($ch,

CURLOPT_HEADER,

0);

curl_setopt($ch,

CURLOPT_RETURNTRANSFER,

1);

curl_setopt($ch,

CURLOPT_COOKIEFILE,

$cookie);

//讀取cookie

$rs

=

curl_exec($ch);

//執行cURL抓取頁面內容

curl_close($ch);

return

$rs;

}

函數get_content()中也是先初始化curl,然後設置相關選項,執行curl,釋放資源。其中我們設置CURLOPT_RETURNTRANSFER為1即自動返回信息,而CURLOPT_COOKIEFILE可以讀取到登錄時保存的cookie信息,最後將頁面內容返回。

我們的最終目的是要獲取到模擬登錄後的信息,也就是只有正常登錄成功後才能獲取的有用信息。接下來我們以登錄開源中國的移動版為例,看看如何抓取到登錄成功後的信息。

//設置post的數據

$post

=

array

(

’email’

=

‘oschina賬戶’,

‘pwd’

=

‘oschina密碼’,

‘goto_page’

=

‘/my’,

‘error_page’

=

‘/login’,

‘save_login’

=

‘1’,

‘submit’

=

‘現在登錄’

);

//登錄地址

$url

=

“”;

//設置cookie保存路徑

$cookie

=

dirname(__FILE__)

.

‘/cookie_oschina.txt’;

//登錄後要獲取信息的地址

$url2

=

“”;

//模擬登錄

login_post($url,

$cookie,

$post);

//獲取登錄頁的信息

$content

=

get_content($url2,

$cookie);

//刪除cookie文件

@

unlink($cookie);

//匹配頁面信息

$preg

=

“/td

class=’portrait'(.*)\/td/i”;

preg_match_all($preg,

$content,

$arr);

$str

=

$arr[1][0];

//輸出內容

echo

$str;

使用總結

1、初始化curl;

2、使用curl_setopt設置目標url,和其他選項;

3、curl_exec,執行curl;

4、執行後,關閉curl;

5、輸出數據。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原創文章,作者:ESLDH,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/313413.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
ESLDH的頭像ESLDH
上一篇 2025-01-07 09:43
下一篇 2025-01-07 09:43

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python七年級內容用法介紹

    本文將從多個方面對Python七年級內容進行詳細闡述。 一、安裝Python 要使用Python進行編程,首先需要在計算機上安裝Python。Python可以在官網上免費下載。下載…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • Python獲取Flutter上內容的方法及操作

    本文將從以下幾個方面介紹Python如何獲取Flutter上的內容: 一、獲取Flutter應用數據 使用Flutter提供的Platform Channel API可以很容易地獲…

    編程 2025-04-28
  • Python少兒編程的學習內容

    Python被譽為是最適合新手入門的編程語言之一,它簡潔易懂,同時涵蓋了廣泛的編程知識。Python的少兒編程課程也因其易學性和實用性越來越受到家長和孩子們的歡迎。接下來我們將從多…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若服務器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • 使用Python轉髮網頁內容

    Python是一種廣泛使用的編程語言,它在網絡爬蟲、數據分析、人工智能等領域都有廣泛的應用。其中,使用Python轉髮網頁內容也是一個常見的應用場景。在本文中,我們將從多個方面詳細…

    編程 2025-04-27
  • Python中提取指定字符後面的內容

    Python是一種強類型動態語言,它被廣泛應用於數據科學、人工智能、自動化測試、Web開發等領域。在Python中提取指定字符後面的內容是一個常見的需求。 一、split方法 Py…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27

發表回復

登錄後才能評論