【发布时间】:2012-03-10 02:04:38
【问题描述】:
我的代码
<?php
$url='Search.jsp';
// disguises the curl using fake headers and a fake user agent.
function disguise_curl($url)
{
$curl = curl_init();
// Setup headers - I used the same headers from Firefox version 2.0.0.6
// below was split up because php.net said the line was too long. :/
$header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,";
$header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[] = "Cache-Control: max-age=0";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$header[] = "Accept-Language: en-us,en;q=0.5";
$header[] = "Pragma: "; // browsers keep this blank.
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.google.com/bot.html)');
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_REFERER, 'https://lalpacweb.blackpool.gov.uk/protected/wca/publicRegisterVehicleSearch.jsp');
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_COOKIESESSION, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_COOKIEJAR, "cookies.txt");
curl_setopt($curl, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt( $curl, CURLOPT_POST, 1);
curl_setopt ($curl, CURLOPT_POSTFIELDS, 'search.licenceTypeID=34&search.licenceLinkFileID=2&search.vehicleRegNumber=5&publicRegisterVehicle=Search');
$html = curl_exec($curl); // execute the curl command
echo curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl); // close the connection
return $html; // and finally, return $html
}
// uses the function and displays the text off the website
$text = disguise_curl($url);
echo $text;
?>
它返回页面,填写表格,但不发布。我得到的 curl_getinfo 响应是..
200HTTP/1.1 200 OK Pragma: no-cache Cache-Control: no-cache,no-store,must-revalidate 过期:Thu, 01 Jan 1970 00:00:00 GMT 内容类型:text/html;charset=ISO-8859-1 内容语言:en-GB 内容长度:5901 日期:2012 年 2 月 19 日星期日 12:24:08 GMT 服务器: 阿帕奇
有什么想法吗?
感谢您的帮助
【问题讨论】:
-
看来你的代码是正确的,所以你应该确保你请求的字段是正确的,状态为200的响应表明你的请求是正确的,但可能你的字段不正确,你可以写一个测试服务器上的页面并使用上面的代码进行测试。
-
状态 200 代码是否显示表单已发布?或者它不会回复这些信息?表单有两个提交按钮,我通过说“publicRegisterVehicle=Search”指定了一个,对吗?
-
页面上可能需要设置 2 个隐藏的表单域。 _sourcePage 和 __fp