當前位置:首頁 » 編程語言 » php模擬https請求

php模擬https請求

發布時間: 2022-06-11 17:05:29

『壹』 php模擬http請求並無條件結束請求,可以是get方式的http請求,但是我想在請求1秒後結束請

$ch=curl_init("http://www.domain.com/api/index.php?test=1");
curl_setopt($ch,CURLOPT_TIMEOUT,1);//超時設置,秒級毫秒級CURLOPT_TIMEOUT_MS
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);//獲取數據返回
curl_setopt($ch,CURLOPT_BINARYTRANSFER,true);//在啟用CURLOPT_RETURNTRANSFER時候將獲取數據返回
echo$output=curl_exec($ch);

『貳』 對於https協議的網站,可以用php 的curl來模擬get請求和post請求嗎,能得到返回值嗎

可以。
CURLOPT_PROTOCOLS
CURLPROTO_* 的位域指。如果被啟用,位域值會限定libcurl在傳輸過程中有哪些可使用的協議。這將允許你在編譯libcurl時支持眾多協議,但是限制只是用它們中被允許使用的一個子集。默認libcurl將會使用全部它支持的協議。參見 CURLOPT_REDIR_PROTOCOLS .
可用的協議選項為:CURLPROTO_HTTP、CURLPROTO_HTTPS、CURLPROTO_FTP、CURLPROTO_FTPS、CURLPROTO_SCP、CURLPROTO_SFTP、CURLPROTO_TELNET、CURLPROTO_LDAP、CURLPROTO_LDAPS、CURLPROTO_DICT、CURLPROTO_FILE、CURLPROTO_TFTP、CURLPROTO_ALL

對了,可定能得到返回值

『叄』 php程序員用PHP如何實現https方式訪問

SSL證書安裝到伺服器環境裡面安裝的,不是安裝到語言編程語言的。
一、如果程序員要實現,具備一台獨立伺服器或雲伺服器
二、確定好需要實現HTTPS方式的域名(網址)。
三、登陸淘寶搜索:Gworg 獲取SSL證書,辦理認證手續。
四、拿到證書安裝到伺服器就可以了,不會安裝建議讓簽發機構安裝。

『肆』 php如何模擬瀏覽器行為

// 用戶名
$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:
「;
echo curl_errno($ch) . 」 – 」 . curl_error($ch) . 」
「;
}
// 關閉CURL會話
curl_close($ch);
上面這個例子相對簡單,因為用戶名和密碼可以明文傳輸,而且登陸也不需要驗證碼。qq.com的模擬登陸相對就麻煩多了,首先要突破驗證碼這關,然後由於 QQ密碼是經過javascript加密後傳輸的,登陸界面也要模擬出來,下一篇文章再繼續深入談談QQ的模擬登陸。

『伍』 在PHP中如何偽造http頭進行模擬登陸

用php模擬登陸主要分為三部分 1. post數據。 2.根據返回的http頭,從中截出cookie段。 3.偽造http頭發送請求。 我這里以用php抓取163相冊的需要密碼才能訪問的目錄為例。 <?php function posttohost($url, $data) //post數據 { $url = parse_url($url); if (!$url) return "couldn't parse url"; if (!isset($url['port'])) { $url['port'] = ""; } if (!isset($url['query'])) { $url['query'] = ""; } $encoded = ""; foreach ($data as $k=>$v) { $encoded .= ($encoded ? "&" : ""); $encoded .= rawurlencode($k)."=".rawurlencode($v); } $fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80); if (!$fp) return "Failed to open socket to $url[host]"; fputs($fp, sprintf("POST %s%s%s HTTP/1.0\n", $url['path'], $url['query'] ? "?" : "", $url['query'])); fputs($fp, "Host: $url[host]\n"); fputs($fp, "Content-type: application/x-www-form-urlencoded\n"); fputs($fp, "Content-length: " . strlen($encoded) . "\n"); fputs($fp, "Connection: close\n\n"); fputs($fp, "$encoded\n"); $line = fgets($fp,1024); if (!eregi("^HTTP/1\.. 200", $line)) return; $results = ""; $inheader = 1; while(!feof($fp)) { $line = fgets($fp,1024); if ($inheader && ($line == "\n" || $line == "\r\n")) { $inheader = 0; } elseif ($inheader) { $results .= $line; } } fclose($fp); return $results; }

『陸』 如何通過php的curl模擬ajax請求,獲取其返回值

這個需要配合js,打開一個html頁面,首先js用ajax請求頁面,返回第一個頁面信息確定處理完畢(ajax有強制同步功能),ajax再訪問第二個頁面。(或者根據伺服器狀況,你可以同時提交幾個URL,跑幾個相同的頁面)
參數可以由js產生並傳遞url,php後台頁面根據URL抓頁面。然後ajax通過php,在資料庫或者是哪裡設一個標量,標明檢測到哪裡。由於前台的html頁面執行多少時候都沒問題,這樣php的內存限制和執行時間限制就解決了。
因為不會浪費大量的資源用一個頁面來跑一個瞬間500次的for循環了。(你的500次for循環死了原因可能是獲取的數據太多,大過了php限制的內存)
不過印象中curl好像也有強制同步的選項,就是等待一個抓取後再執行下一步。但是這個500次都是用一個頁面線程處理,也就是說肯定會遠遠大於30秒的默認執行時間。

『柒』 請教用Curl 在php 裡面模擬表單提交 文本+文件的寫法


publicfunctioncurl($url,$postFields=null)
{
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_FAILONERROR,false);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
if($this->readTimeout){
curl_setopt($ch,CURLOPT_TIMEOUT,$this->readTimeout);
}
if($this->connectTimeout){
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$this->connectTimeout);
}
//https請求
if(strlen($url)>5&&strtolower(substr($url,0,5))=="https"){
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
}

if(is_array($postFields)&&0<count($postFields))
{
$postBodyString="";
$postMultipart=false;
foreach($postFieldsas$k=>$v)
{
if("@"!=substr($v,0,1))//判斷是不是文件上傳
{
$postBodyString.="$k=".urlencode($v)."&";
}
else//文件上傳用multipart/form-data,否則用www-form-urlencoded
{
$postMultipart=true;
}
}
unset($k,$v);
curl_setopt($ch,CURLOPT_POST,true);
if($postMultipart)
{
foreach($postFieldsas$k=>$v){
if("@"==substr($v,0,1)){
$tempffile=preg_replace('/^@/','',$v);
$advfield[$k]=newCURLFile($tempffile);
}else{
$advfield[$k]=$v;
}
}

curl_setopt($ch,CURLOPT_POSTFIELDS,$advfield);
unset($k,$v,$advfield);
//curl_setopt($ch,CURLOPT_POSTFIELDS,$postFields);//田村改
//curl_setopt($ch,CURLOPT_POSTFIELDS,['file'=>newCURLFile(realpath('image.png'))]);
}
else
{
curl_setopt($ch,CURLOPT_POSTFIELDS,substr($postBodyString,0,-1));
}
}
$reponse=curl_exec($ch);

if(curl_errno($ch))
{
thrownewException(curl_error($ch),0);
}
else
{
$httpStatusCode=curl_getinfo($ch,CURLINFO_HTTP_CODE);
if(200!==$httpStatusCode)
{
thrownewException($reponse,$httpStatusCode);
}
}
curl_close($ch);
return$reponse;
}

表單列表是 $postFields 傳入參數

數組,如果有文件 ,就在數組的值 前面加@

已經做好的 集成類 的實現 其他類欄位和方法沒給出,寫不下了。

但是大致的實現過程應該可以看懂了

『捌』 PHP模擬HTTP的POST請求時遇到的問題求助

類中 靜態方法和靜態屬性的引用方法例如class Test{ public static $test = 1; public static function test(){ }}可以不用實例化對象直接使用 Test::$test 來取得$test屬性的值靜態方法調用也同理Test::test(); 直接調用靜態方法test

如果我解答樓主覺得不清楚可以自己去後盾人學習,對你學習PHP應該會有幫助,

熱點內容
pythonforinkeys 發布:2024-05-19 01:55:44 瀏覽:792
電腦如何區域網共享文件夾 發布:2024-05-19 01:25:01 瀏覽:68
手機存儲越大性能越好嗎 發布:2024-05-19 01:14:28 瀏覽:176
我的世界hyp伺服器怎麼玩 發布:2024-05-19 00:51:25 瀏覽:801
手機如何解壓百度雲文件 發布:2024-05-19 00:32:24 瀏覽:905
centos使用python 發布:2024-05-18 23:39:48 瀏覽:869
幻影天龍腳本 發布:2024-05-18 23:38:17 瀏覽:714
編程的py 發布:2024-05-18 23:36:22 瀏覽:76
安卓系統怎麼改序列號 發布:2024-05-18 23:28:16 瀏覽:785
c語言中實數 發布:2024-05-18 23:21:03 瀏覽:897