2016-12-01 58 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