我需要一些幫助來設置一個頁面的cURL請求。在荷蘭,我們有這個網站'RDW.NL',讓您有機會通過輸入車牌號碼來查看車輛的詳細信息。需要cURL請求幫助
對於企業來說,有一個支付替代方案來請求大量的數據,但成本太高(每個請求€1050 +€0.50),因爲它僅用於個人使用並僅用於測試目的。
最近,他們改變了他們的網站,舊的腳本停止工作,所以我決定嘗試自己,但我有點卡住了。
這是我到目前爲止有:
<?php
$ckfile = "/tmp/rdwcookie.txt";
# Setup first URL
$ch = curl_init("https://ovi.rdw.nl/Default.aspx");
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile);
$input = curl_exec($ch);
# Get VIEWSTATE variable
preg_match('/id="__VIEWSTATE" value="(.*)" \/>/i', $input, $__VIEWSTATE);
preg_match('/Set-Cookie: ISAWPLB{(.*)}={(.*)};/i', $input, $__COOKIES);
preg_match('/Set-Cookie: ASP.NET_SessionId=(.*);/i', $input, $__ASPNET);
#echo $input;
# Set options for RDW Call
$options = array(
'ctl00$ctl00$PlaceHolderMainContent$PlaceHolderMainContent$txtKenteken' => '16-JS-GK',
'ctl00%24ctl00%24PlaceHolderMainContent%24PlaceHolderMainContent%24btnZoeken' => 'Zoeken',
'__VIEWSTATE' => $__VIEWSTATE[1],
'__EVENTTARGET' => '',
'__EVENTARGUMENT' => ''
);
#echo file_get_contents($ckfile);
# Setup second URL
$ch = curl_init("https://ovi.rdw.nl/VoertuigDetails.aspx");
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_setopt($ch, CURLOPT_POSTFIELDS, $options);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIE, 'ISAWPLB{'.$__COOKIES[1].'}='.$__COOKIES[2].'; ASP.NET_SessionId='.$__ASPNET[1]);
#curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile);
$data = curl_exec($ch);
# Echo data
echo $data;
?>
在第一頁我試圖保存所有Cookie(工作),但是在發送CURLOPT_COOKIEFILE不顯示在捲曲請求的報頭的所有cookie 。因此,我使用了一些preg_matches的CURLOPT_COOKIE手動獲取cookie並將它們一起發送(此工作)。
此外,後變量是正確的。
但是,當我回復$data
時,它仍然抱怨服務處於脫機狀態,當然這可能是這種情況,但是當訪問該頁面並手動輸入一些數據時,它完美地起作用。
那麼,有什麼我失蹤?我似乎無法使用cURL加載正確的頁面。
任何幫助,將不勝感激。
響應不是空的。它返回頁面,但我必須缺少一些會話/ cookie /頭信息才能正確加載頁面。它給出了一個模糊的錯誤(服務不在線),但當通過瀏覽器訪問該頁面時,顯示該頁面正常工作。 – 2011-06-11 07:51:11