目前我所了解到的在php后台中,用php模擬瀏覽器訪問網址的方法有兩種:
第一種:模擬GET請求:file_get_contents($url)
通過php內置的 file_get_contents 函數可以模擬瀏覽器訪問網址的行為,取的結果就是那個網址所返回的所有東西(這種情況一般用於返回的是 xml 格式字符串或者 json 字符串)
第二種:模擬GET/POST請求:curl
curl 是 php 提供的內置函數,其功能非常強大,封裝常用的http,soap,ftp等協議
微信主要通過其進行模擬POST請求
1)初始化curl
2)設置參數
3)執行curl
4)關閉句柄
示例代碼:
1、初始化 $ch = curl_init()
2、設置參數 curl_setopt($ch,參數)
3、執行 curl_exec($ch)
4、關閉 curl_close($ch)
5、輸出錯誤信息:curl_error($ch)
第2步設置時,常用參數
CURLOPT_URL 請求url CURLOPT_RETURNTANSFER(1)捕獲url響應信息,不輸出 CURLOPT_HEADER(0或1) 設置請求頭信息 CURLOPT_POST(1) 設置是否使用POST請求,1開啟 CURLOPT_POSTFIELDS 設置傳輸的數據,數組
例子:
微信機器人:小黃雞
<?php header('Content-type:text/html;charset=utf-8'); $url = "http://www.xiaohuangji.com/ajax.php"; //1、初始化curl $ch = curl_init(); //2、設置參數,參數1初始化$ch,參數2設置常量,參數3常量的值 //設置請求url網址 curl_setopt($ch,CURLOPT_URL,$url); //捕獲url響應信息不輸出 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //設置請求頭信息 curl_setopt($ch,CURLOPT_HEADER,0); //設置傳輸post數組 $data = array( 'para'=>'你是男的還是女的' ); //設置開啟POST請求 curl_setopt($ch,CURLOPT_POST,1); //傳輸參數值 curl_setopt($ch,CURLOPT_POSTFIELDS,$data); //3、執行curl $output = curl_exec($ch); //4、關閉句柄 curl_close($ch); if($output === False) { echo 'error:'.curl_error($ch); } echo $output; ?>