2
功能:頭不包含POST數據
function post_with_curl($target,$ref, $name ,$viewStateValue)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $target) ; // Target site
curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace('\\','/', getcwd().'/'."cook.txt")); //CHANGE THIS
curl_setopt($ch, CURLOPT_REFERER, $ref);
curl_setopt($ch, CURLOPT_TIMEOUT, CURL_TIMEOUT); // Timeout
curl_setopt($ch, CURLOPT_USERAGENT, WEBBOT_NAME);
curl_setopt ($ch, CURLOPT_POST, 1);
$postfields = urlencode('__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=.'. $viewStateValue. '&__VIEWSTATEENCRYPTED=&ctl00$ContentPlaceHolder1$NameSearch1$CompanyNameTextBox1='.$name.'&ctl00$ContentPlaceHolder1$SearchButton=Search Now') ;
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); // Follow redirects
curl_setopt($ch, CURLOPT_MAXREDIRS, 4); // Limit redirections to four
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Return in string
$curled_page = curl_exec($ch);
var_dump(curl_getinfo($ch , CURLINFO_HEADER_OUT)) ;
curl_close($ch);
return $curled_page ;
}
的var_dump的結果(curl_getinfo($ CH,CURLINFO_HEADER_OUT)):
string 'POST /V2/COUNTY/Default.aspx HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Host: 198.173.15.31
Accept: */*
Referer: http://198.173.15.31/V2/COUNTY/
Cookie: ASP.NET_SessionId=pqfpur45akgy3l45ujq3fail
Content-Length: 1603
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue
' (length=339)
正如我看到的那樣,頭部(通過curl發送?)不包含任何POST數據。爲什麼?
好吧,我如何看到curl發送的HTTP消息體?我只想看看curl和服務器之間交換的確切數據,然後將它與服務器和firefox之間交換的數據進行比較。 –
據我所知,PHP curl版本不提供這樣的功能。我甚至爲此迅速掃描了手冊。我認爲它會像你創建的字符串一樣傳遞,但我不會100%知道。但我認爲這很可能。作爲替代方案,您可以嗅探網絡流量並在那裏觀察請求。這會讓你100%滿意,並且可以與每個HTTP客戶端一起工作。 – hakre
我會嘗試嗅探..感謝您的時間 –