2013-05-21 99 views
2

嘿,我試圖捲曲「https://www.libertyreserve.com/captcha.jpg
所以我試圖捲曲它,但結果卻是「1×1」的Gif產品圖
然後我reialized,該網站希望從登錄一個cookie頁面顯示有效的驗證碼 我使用的功能錯誤捲曲功能

$file['cookie'] = "cookie.txt"; 
function cURL_Page($url='',$var=''){ 
    global $file; 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT,20); 
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31'); 
    curl_setopt($curl, CURLOPT_REFERER, "http://www.libertyreserve.com/en/login"); 
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
    if($var) { 
    curl_setopt($curl, CURLOPT_POST, 1); 
    curl_setopt($curl, CURLOPT_POSTFIELDS, $var); 
    } 
    curl_setopt($curl, CURLOPT_COOKIE,$file['cookie']); 
    curl_setopt($curl, CURLOPT_COOKIEFILE,$file['cookie']); 
    curl_setopt($curl, CURLOPT_COOKIEJAR,$file['cookie']); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 3); 
    curl_setopt($curl, CURLOPT_HEADER, 0); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); 
    $result = curl_exec($curl); 
    curl_close($curl); 
    return $result; 
} 

然後我捲曲登錄頁面

$LoginPage = cURL_Page("https://www.libertyreserve.com/en/login"); 

然後捲曲在PIC,並把報頭和打印

$ImageCode = cURL_Page("https://www.libertyreserve.com/captcha.jpg"); 
header("Content-Type: image/gif"); 
echo $ImageCode; 

,但結果仍然是「1×1」 BCZ捲曲功能不;噸保存的cookies
PS:網站的響應與「內容類型:image/GIF」爲我把它放在頭

回答

1

很少觀察

這裏是工作的代碼

$ch = new SharedCurl(__DIR__ . "\libertyreserve.crt"); 

try { 
    $ch->get('https://www.libertyreserve.com/en/login'); 
    $image = $ch->get('https://www.libertyreserve.com/captcha.jpg'); 
    header("Content-Type: image/gif"); 
    echo $image; 
} catch (Exception $e) { 
    print $e->getMessage(); 
} 

輸出

enter image description here

類用於

class SharedCurl { 
    private $ch; 
    private $info; 

    function __construct($cert) { 
     $this->cookie = tempnam("/tmp", "CURLCOOKIE"); 
     $this->cert = $cert; 
     if (! is_file($this->cert)) { 
      throw new Exception("Can't find Certificate"); 
     } 
    } 

    function get($url) { 
     $this->ch = curl_init($url); 
     $this->shared(); 
     $responce = curl_exec($this->ch); 
     $this->info = curl_getinfo($this->ch); 

     if (curl_errno($this->ch)) { 
      throw new Exception(curl_error($this->ch)); 
     } 
     curl_close($this->ch); 
     return $responce; 
    } 

    function shared() { 
     curl_setopt($this->ch, CURLOPT_CONNECTTIMEOUT, 20); 
     curl_setopt($this->ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31'); 
     curl_setopt($this->ch, CURLOPT_REFERER, "http://www.libertyreserve.com/en/login"); 
     curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, true); 
     curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($this->ch, CURLOPT_COOKIEJAR, $this->cookie); 
     curl_setopt($this->ch, CURLOPT_COOKIEFILE, $this->cookie); 
     curl_setopt($this->ch, CURLOPT_CAINFO, $this->cert); 
     curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, 0); 
     curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 0); 
    } 
} 

Certificate File Used