2016-12-01 59 views
1

我想在网站上使用PHP CURL进行查询:Apple Service and Support Coverage并希望获得带有序列号/ IMEI号(example IMEI: 359209071801769)的结果。使用PHP CURL的Apple服务和支持范围查询

我该怎么做。有任何想法吗?

随着下面的代码,我没有得到任何结果,因为我不能发布的价值。任何想法?

<?php 
    $cookie = "cookie.txt"; 

    if(!$_POST){ 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, "https://checkcoverage.apple.com/gc?t=image&timestamp=".round((microtime(true) * 1000) - (60*60*3/1000))); 
    curl_setopt($curl, CURLOPT_REFERER, "https://checkcoverage.apple.com/tr/tr/"); 
    curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); 
    curl_setopt($curl, CURLOPT_ENCODING, "gzip"); 
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET'); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($curl, CURLOPT_VERBOSE, true); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,0); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,0); 
    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie); 
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); 
    $gv = curl_exec($curl); 

    $sadf = json_decode($gv, true); 

    echo '<form action="" method="post">'; 
    echo '<img src="data:image/jpeg;base64,'.$sadf["binaryValue"].'" /><br />'; 
    echo 'Type Captcha Code <input type="text" name="captcha" /><br />'; 
    echo 'Type IMEI<input type="text" name="imei" /><br />'; 
    echo '<input type="submit" value="Run" />'; 
    echo '</form>'; 
    curl_close($curl); 
    }else{ 
    $imei = $_POST["imei"]; 
    $captcha = $_POST["captcha"]; 

    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, "https://checkcoverage.apple.com/tr/tr/"); 
    curl_setopt($curl, CURLOPT_REFERER, "https://checkcoverage.apple.com/tr/tr/"); 
    curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); 
    curl_setopt($curl, CURLOPT_ENCODING, "gzip"); 
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET'); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($curl, CURLOPT_POST, true); 
    curl_setopt($curl, CURLOPT_VERBOSE, true); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,0); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,0); 
    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie); 
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); 
    preg_match('#csrfToken\: "(.*?)"#si', curl_exec($curl), $token); 
    $post = "sno=$imei&ans=$captcha&captchaMode=image&CSRFToken=".$token[1]; 
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post); 
    $content = preg_replace("/<head.*>/i", "<head><base href='https://checkcoverage.apple.com/' />", curl_exec($curl), 1); 

    if(curl_exec($curl) === false){ 
    echo 'Curl error: ' . curl_error($curl); 
    }else{ 

    echo $content; 
    } 
    curl_close($curl); 
    } 
    ?> 

回答

0
  1. 使用空进行编码,而不是gzip的。如果你指定gzip,那么它只会处理gzip,就像你指定空它将处理所有的gzip一样。

    curl_setopt($ curl,CURLOPT_ENCODING,“”);

  2. 使用cookie的完整路径代替绝对路径。即$cookie = "/var/some/cookie.txt"

  3. 使用http_build_query为岗位参数,而不是原始参数(在情况下,如果没有在您的文章参数的任何特殊字符)。

  4. 使用verbose启用代码以查看卷曲发生了什么。

    curl_setopt($ curl,CURLOPT_VERBOSE,true);

+0

我做了你说的我的代码,但没有成功。我的发布参数中没有特殊字符。也许我做错了什么。你能否纠正我的代码并在这里发帖或尝试我的代码并再次看看? – ymeksur