Php cURL-浏览多个表单,但可以';一页也过不去
对于个人项目,我正在尝试从我无法控制/访问的网站自动下载文件。要下载该文件,总共需要6页的用户输入,每一页都有一个表单提交,下载在最后一页 网址: 我已经设法使用cURL浏览了前3页。当我的cURL代码到达第4页时,它给出了以下错误: 无法从多个浏览器窗口下订单,请重试 这个错误是由服务器(不是cURL)生成的,所以我不知道这意味着什么,也不知道如何解决这个问题。但是,如果您在每一页上手动提交表单,则可以毫无错误地进入第四页 这是工作代码。您会注意到前3页的工作与预期一样。但是,如果您取消注释第四页的代码,您将看到它生成了错误消息 我被难住了!如有任何帮助或建议,将不胜感激 谢谢Php cURL-浏览多个表单,但可以';一页也过不去,php,forms,curl,Php,Forms,Curl,对于个人项目,我正在尝试从我无法控制/访问的网站自动下载文件。要下载该文件,总共需要6页的用户输入,每一页都有一个表单提交,下载在最后一页 网址: 我已经设法使用cURL浏览了前3页。当我的cURL代码到达第4页时,它给出了以下错误: 无法从多个浏览器窗口下订单,请重试 这个错误是由服务器(不是cURL)生成的,所以我不知道这意味着什么,也不知道如何解决这个问题。但是,如果您在每一页上手动提交表单,则可以毫无错误地进入第四页 这是工作代码。您会注意到前3页的工作与预期一样。但是,如果您取消注释第
/**
* Page 1
*
* Sample input data:
*
* Floor: 62
* Flat No: D
* House No: 1
* Street Name: Austin Road West
* Area Code: Kowloon
*
*
*/
$cookie="cookie.txt";
$url = "https://www1.iris.gov.hk/eservices/searchlandregister/search.jsp";
$url2 = "https://www2.iris.gov.hk/eservices/searchLandRegister.do";
$url3 = "https://www2.iris.gov.hk/eservices/searchLandRegister.do";
$url4 = "https://www2.iris.gov.hk/eservices/searchByAddressResult2.do";
$params = array(
'previousOp' => urlencode(''),
'functionId' => urlencode('continue'),
'forward2Caller' => urlencode('searchlandregister'),
'SStreetName' => urlencode('eng'),
'SDevelopmentName' => urlencode('eng'),
'SBlock' => urlencode('*'),
'SFloor' => urlencode('62'),
'SFlat' => urlencode('D'),
'searchBySection' => urlencode('StreetName'),
'SSelectedArea' => urlencode('20'),
'SDevelopmentNameEng' => urlencode(''),
'SDevelopmentNameChn' => urlencode(''),
'SStreetNameEng' => urlencode('AUSTIN ROAD WEST'),
'SStreetNameChn' => urlencode(''),
'hasSpec' => urlencode('0'),
'hasLotSpec' => urlencode('0'),
'specPrn' => urlencode(''),
'haveSDR' => urlencode('Y'),
'initFromRVD' => urlencode('N'),
'SHouseNo1' => urlencode('1'),
'SHouseNo2' => urlencode(''),
'SPrn' => urlencode(''),
'SExtension' => urlencode('false'),
'SLotType' => urlencode(''),
'SLotNo' => urlencode(''),
'SSection1' => urlencode(''),
'SSub1' => urlencode(''),
'SSection2' => urlencode(''),
'SSub2' => urlencode(''),
'SSection3' => urlencode(''),
'SSub3' => urlencode(''),
'SSection4' => urlencode(''),
'SMisc' => urlencode(''),
'recordIndex' => urlencode(''),
'SSBlock' => urlencode('*'),
'SSFloor' => urlencode('62'),
'SSFlat' => urlencode('D'),
'SDBlock' => urlencode('*'),
'SDFloor' => urlencode('*'),
'SDFlat' => urlencode('*'),
'SLBlock' => urlencode('*'),
'SLFloor' => urlencode('*'),
'SLFlat' => urlencode('*'),
'SRegisterName' => urlencode('SDR'),
'SSRegisterName' => urlencode('SDR'),
'SLRegisterName' => urlencode('SDR'),
'SDRegisterName' => urlencode('SDR'),
'xSSBlock' => urlencode('*'),
'xSSFloor' => urlencode('62'),
'xSSFlat' => urlencode('D'),
'xHouseNo1' => urlencode('1'),
'xHouseNo2' => urlencode(''),
'SStreetNameInput' => urlencode('AUSTIN ROAD WEST'),
'xSelectedArea' => urlencode('20'),
'xSSRegisterName' => urlencode('SDR'),
'xSDBlock' => urlencode('*'),
'xSDFloor' => urlencode('*'),
'xSDFlat' => urlencode('*'),
'SDevelopmentNameInput' => urlencode(''),
'xSDRegisterName' => urlencode('SDR'),
'xSLBlock' => urlencode('*'),
'xSLFloor' => urlencode('*'),
'xSLFlat' => urlencode('*'),
'SLotTypeInput' => urlencode(''),
'xLotNo' => urlencode(''),
'xSection1' => urlencode(''),
'xSub1' => urlencode(''),
'xSection2' => urlencode(''),
'xSub2' => urlencode(''),
'xSection3' => urlencode(''),
'xSub3' => urlencode(''),
'xSection4' => urlencode(''),
'xMisc' => urlencode(''),
'xSLRegisterName' => urlencode('SDR'),
'xPrn' => urlencode(''),
// Page 2
'dispLotPRN' => urlencode('C5458863'),
'dispBlock' => urlencode('SO1'),
'BBlock' => urlencode('SO1'),
'hasBlock' => urlencode('1'),
// Page 3
'somePrn[0]' => urlencode('B6479113'),
'someSelected[0]' => urlencode('on'),
'someEnquiry[0]' => urlencode('C'),
'someNature[0]' => urlencode('P'),
'someCopies[0]' => urlencode('1'),
// Page 4
'dispHouseNo' => urlencode('1'),
'dispStreetName' => urlencode('AUSTIN ROAD WEST'),
'hasLot' => urlencode('0'),
'hasFloor' => urlencode('0'),
'street' => urlencode('true'),
'dev' => urlencode('false'),
'lot' => urlencode('false')
);
//url-ify the data for the POST
foreach($params as $key=>$value) {
$string .= $key.'='.$value.'&';
} // end foreach
rtrim($string, '&');
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ($ch, CURLOPT_POST, false);
$result = curl_exec ($ch);
//echo $result;
// Submit to Page 2
curl_setopt ($ch, CURLOPT_URL, $url2 . '?' . $string);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ($ch, CURLOPT_POST, false);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $params);
$result = curl_exec ($ch);
//echo $result;
// Submit to Page 3
$params['previousOp'] = 'BLOCK LIST';
curl_setopt ($ch, CURLOPT_URL, $url3 . '?' . $string);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ($ch, CURLOPT_POST, false);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $params);
$result = curl_exec ($ch);
//echo $result;
// Submit to Page 4
/*
$params['previousOp'] = 'EXACT MATCH';
$params['functionId'] = 'doAddAndGoToOrder';
$params['queryResultHash'] = '978962765';
curl_setopt ($ch, CURLOPT_URL, $url4 . '?' . $string);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $params);
$result = curl_exec ($ch);
*/
curl_close($ch);
echo $result;