访问php网页显示源代码_关于PHP中获取网页源代码的说明
PHP的fopen()方法將指定的文件資源綁定到一個(gè)流上。如果文件路徑是”scheme://…” 的格式,則被當(dāng)成一個(gè)URL,PHP將搜索對應(yīng)的協(xié)議處理器(也被稱為封裝協(xié)議)來處理此模式。因此可以通過fopen()方法來獲取大部分的網(wǎng)頁前臺源代碼。
但是,很多網(wǎng)站出于安全性考慮,在處理請求時(shí),往往會對請求來源的合法性進(jìn)行驗(yàn)證,這個(gè)時(shí)候簡單的通過上述方式來獲取網(wǎng)頁源代碼時(shí),將會被目標(biāo)服務(wù)器拒絕。此時(shí),我們就需要模擬HTTP的方式來發(fā)送GET/POST請求,從而合法得通過目標(biāo)服務(wù)器的驗(yàn)證,再通過獲取請求的響應(yīng)輸出流來得到網(wǎng)頁前臺源代碼。
下面是利用fsockopen方法打開網(wǎng)站的Scoket連接,通過構(gòu)造并發(fā)送HTTP報(bào)文頭來模擬HTTP情求來實(shí)現(xiàn)獲取網(wǎng)頁源代碼的方法:
// 需要訪問的網(wǎng)頁地址
$url = “http://www.example.com/index.html”;
// 打開網(wǎng)頁Scoket連接
$handler = fopen($url, "r");
if (!$handler) {
// 發(fā)送HTTP報(bào)文頭
$host = "www.example.com";
$request = "/index.html";
$header = "GET " . $request . " HTTP/1.1\r\n";
$header .= "Host: " . $host . "\r\n";
$header .= "Connection: Close\r\n\r\n";
$handler = fsockopen($host, 80);
fwrite($handler, $header);
}
// 讀取網(wǎng)頁響應(yīng)數(shù)據(jù)
while (!feof($handler)) {
$line = fgets($handler, 1024);
echo($line);
}
// 關(guān)閉網(wǎng)頁Scoket連接
fclose($handler);
其中HTTP報(bào)文頭的結(jié)構(gòu)可以根據(jù)網(wǎng)頁請求的具體需要來添加其它相關(guān)信息。
總結(jié)
以上是生活随笔為你收集整理的访问php网页显示源代码_关于PHP中获取网页源代码的说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git for Mac安装(包含客户端软
- 下一篇: php实现加密解密,PHP实现的加密解密