https://www.handelsregister.de/rp_web/mask.do?Typ=e
Postleitzahl:填入 01067
点击suchen
进入下一页,有一个Verdoppeln Sie hier das Suchergebnislimit. 链接
我想得到它的内容。但是一直返回错误。我想可能它设置了什么cookie.可是我已经在程序里面加了一个cookie变量。
$cookie_jar = tempnam('./tmp','cookie');
search($kookie_jar);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.handelsregister.de/rp_web/search.do?doppelt');
//curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);  
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);  $enterprises_list=curl_exec($ch);//返回错误curl_close($ch);
 请教下问题会在哪里?10分奉上。

解决方案 »

  1.   

    第一个获取cookie,去掉没有试过.
    第二个提交查询
    第三个获取结果set_time_limit(0);
    $URL = 'https://www.handelsregister.de/rp_web/mask.do?Typ=e'; 
    define( "COOKIEJAR", tempnam(ini_get( "upload_tmp_dir" ), "cookie"));  
    $useragent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)";   
    $header = array('Accept-Language: zh-cn','Connection: Keep-Alive','Cache-Control: no-cache');   
     
    $ch = curl_init();   
    curl_setopt($ch, CURLOPT_REFERER, $URL);   
    curl_setopt($ch,CURLOPT_HTTPHEADER,$header);   
    curl_setopt($ch, CURLOPT_USERAGENT, $useragent);    
    curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);   
    curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);     
    curl_setopt($ch, CURLOPT_URL, $URL);    
    $result = curl_exec($ch); $strPOST = "suchTyp=e&eregisterArt=&registerNummer&registergericht=&schlagwoerter=&schlagwortOptionen=2&niederlassung=&rechtsform=&postleitzahl=01067&ort=&strasse=&ergebnisseProSeite=10&btnSuche=Suchen"; 
    $ch = curl_init();   
    curl_setopt($ch, CURLOPT_REFERER, $URL);   
    curl_setopt($ch,CURLOPT_HTTPHEADER,$header);   
    curl_setopt($ch, CURLOPT_USERAGENT, $useragent);    
    curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);   
    curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);     
    curl_setopt($ch, CURLOPT_POST,1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $strPOST);
    curl_setopt($ch, CURLOPT_URL, "https://www.handelsregister.de/rp_web/mask.do?Typ=e");  
    $result = curl_exec($ch);
    $str =  file_get_contents(COOKIEJAR);
    if(preg_match("/JSESSIONID\s([\w\.]+)/",$str,$matches))
    {
      $sessionid = $matches[1];
    }$ch = curl_init();   
    curl_setopt($ch, CURLOPT_REFERER, "https://www.handelsregister.de/rp_web/mask.do?Typ=e");   
    curl_setopt($ch,CURLOPT_HTTPHEADER,$header);   
    curl_setopt($ch, CURLOPT_USERAGENT, $useragent);    
    curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIEJAR);   
    curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIEJAR);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);     
    curl_setopt($ch, CURLOPT_URL, sprintf("https://www.handelsregister.de/rp_web/search.do;jsessionid=%s?doppelt", $sessionid));  
    $result = curl_exec($ch);
    echo $result;
      

  2.   

    应该是少了jsessionid=%s
    不过我用Ie的时候,没有这个,所以大意了。
    原理暂时不研究了。
      

  3.   

    专家谈不上,
    你这个关键问题有两个:
    1 https
    2 cookie保存的jsessionid