使用PHP curl模擬瀏覽器抓取網(wǎng)站信息
官方解釋
curl是一個(gè)利用URL語法在命令行方式下工作的文件傳輸工具。curl是一個(gè)利用URL語法在命令行方式下工作的文件傳輸工具。
它支持很多協(xié)議:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。curl同樣支持HTTPS認(rèn)證,HTTP POST方法, HTTP PUT方法, FTP上傳, kerberos認(rèn)證, HTTP上傳, 代理服務(wù)器, cookies, 用戶名/密碼認(rèn)證, 下載文件斷點(diǎn)續(xù)傳,
上載文件斷點(diǎn)續(xù)傳, http代理服務(wù)器管道( proxy tunneling), 甚至它還支持IPv6, socks5代理服務(wù)器, 通過http代理服務(wù)器上傳文件到FTP服務(wù)器等等,功能十分強(qiáng)大。
curl講解一
PHP中curl函數(shù)應(yīng)用
簡單的來說一共四步
curl_init();
curl_setopt();
curl_exec();
curl_close();
最重要的命令就是 curl_setopt();
一個(gè)簡單的post請求例子
index.php
<?php
$url = "http://www.mytest.com/curl/login.php"; //請求的url地址
$user = "zkg111"; //用戶名
$pass = "123456";
$postdata = "user_name=".$user."&password=".$pass; //請求的數(shù)據(jù),以 & 符號分割
$curl = curl_init(); //開啟curl
curl_setopt($curl, CURLOPT_URL, $url); //設(shè)置請求地址
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //是否輸出 1 or true 是不輸出 0 or false輸出
curl_setopt($curl, CURLOPT_POST, 1); //是否使用post方法請求
curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata); //post數(shù)據(jù)
echo $data = curl_exec($curl); //執(zhí)行curl操作
curl_close($curl);
?>
下面一個(gè)簡單的例子,我隨便打開了兄弟連的論壇,接著就模擬了一下兄弟連論壇的登陸,如果需要發(fā)帖的話原理都是一樣的,轉(zhuǎn)接頁面,提交數(shù)據(jù)
特別注意的是cookie的保存目錄 windows7下面必須是在./temp目錄下,開始我自己創(chuàng)建了一個(gè)新文件夾,發(fā)現(xiàn)存是對的,但是cookie讀取的時(shí)候不對,為此還在好多地方
提問,但是沒有回答對的,折騰了好幾天該了保存文件為./temp目錄下才可以的,提醒別的朋友別和我一樣瞎轉(zhuǎn)
<?php
$url = "http://bbs.lampbrother.net/login.php";
$urls = "http://bbs.lampbrother.net";
$lgt = 0;
$user = "XXXX";
$pass = "XXXX";
$question = 0;
$hideid = 1;
$cookie_file = tempnam('./temp','cookie');
$postdata = "forward=&jumpurl=".$urls."&step=2&lgt=".$lgt."&pwuser=".$user."&pwpwd=".$pass."&question=".$question."&answer=&hideid=".$hideid;
$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_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = curl_exec($ch);
curl_close($ch);
//echo $data;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://bbs.lampbrother.net/');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_exec($ch);
curl_close($ch);
?>
- PHP curl模擬瀏覽器采集阿里巴巴的實(shí)現(xiàn)代碼
- php使用curl模擬瀏覽器表單上傳文件或者圖片的方法
- PHP基于curl實(shí)現(xiàn)模擬微信瀏覽器打開微信鏈接的方法示例
- php使用curl訪問https示例分享
- php采用curl訪問域名返回405 method not allowed提示的解決方法
- php 使用curl模擬ip和來源進(jìn)行訪問的實(shí)現(xiàn)方法
- php使用curl并發(fā)減少后端訪問時(shí)間的方法分析
- PHP基于curl模擬post提交json數(shù)據(jù)示例
- PHP使用Curl實(shí)現(xiàn)模擬登錄及抓取數(shù)據(jù)功能示例
- PHP curl模擬登錄帶驗(yàn)證碼的網(wǎng)站
- php使用curl偽造瀏覽器訪問操作示例
相關(guān)文章
IIS下PHP連接數(shù)據(jù)庫提示mysql undefined function mysql_connect()
在很多php教程初學(xué)者都會(huì)在初次php mysql時(shí)出來undefined function mysql_connect() 錯(cuò)誤提示,下面我們來分析原因中。2010-06-06PHP在字符斷點(diǎn)處截?cái)辔淖值膶?shí)現(xiàn)代碼
所謂斷字 (word break),即一個(gè)單詞可在轉(zhuǎn)行時(shí)斷開的地方。這一函數(shù)將在斷字處截?cái)嘧址?/div> 2011-04-04PHP創(chuàng)建XML的方法示例【基于DOMDocument類及SimpleXMLElement類】
這篇文章主要介紹了PHP創(chuàng)建XML的方法,結(jié)合實(shí)例形式分析了php基于DOMDocument類及SimpleXMLElement類創(chuàng)建xml文件的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-09-09php使用function_exists判斷函數(shù)可用的方法
這篇文章主要介紹了php使用function_exists判斷函數(shù)可用的方法,通過一個(gè)圖像處理函數(shù)中使用function_exists函數(shù)判斷并輸出來實(shí)現(xiàn)函數(shù)存在判斷與流程靈活控制的功能,具有很好的借鑒價(jià)值,需要的朋友可以參考下2014-11-11php獲得網(wǎng)站訪問統(tǒng)計(jì)信息類Compete API用法實(shí)例
這篇文章主要介紹了php獲得網(wǎng)站訪問統(tǒng)計(jì)信息類Compete API用法,實(shí)例分析了php使用curl獲取Compete統(tǒng)計(jì)網(wǎng)站信息的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04PHP轉(zhuǎn)Go之?dāng)?shù)組的正確使用詳解
這篇文章主要為大家對比一下PHP中的Array和Golang中的 Array&Slice&Map,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-09-09php中根據(jù)某年第幾天計(jì)算出日期年月日的代碼
在PHP中,使用內(nèi)置的date()函數(shù)很容易得到任意一天是當(dāng)前年的第幾天,格式為date('z'),為此,很多PHP程序會(huì)用一年中的第幾天作為數(shù)據(jù)庫的索引(index)。2011-02-02最新評論