2017-08-17 46 views
0

我想從網站上獲取一些數據。我有登錄憑證,我可以通過curl登錄,但是登錄過程有第二階段,我必須回答一個安全問題。使用curl處理動態url php

問題是我每次輸入用戶名,密碼重定向到不同的網址。

作爲例子: 登錄網址:https://url.com 登錄後:https://url?execution=e4s1&action=caDevicePrint(安全Q /頁)

這裏的執行= e4s1'就像e1s1,e1s2,e3s2登錄後改變的每次。

我想動態地設置CURLOPT_URL。以下是我的代碼:

$this->curl = curl_init();  
    curl_setopt($this->curl, CURLOPT_URL, "https://url?execution=e4s1&action=caDevicePrint"); 
    curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION,1); 
    curl_setopt($this->curl, CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($this->curl, CURLOPT_SSL_VERIFYPEER,0); 
    curl_setopt($this->curl, CURLOPT_USERAGENT,$this->userAgent);  
    curl_setopt($this->curl, CURLOPT_COOKIEJAR,$this->cookieFile); 
    curl_setopt($this->curl, CURLOPT_COOKIEFILE,$this->cookieFile); 

    $results = curl_exec($this->curl); 
    echo $results; 
    if (curl_errno($this->curl)) { 
     echo "Failed loading <br>"; 
     var_dump(curl_error($this->curl)); 
     die(); 
    } 

    curl_close($this->curl); 
+0

你不說如何重定向工作,告訴我們,我們可能會有更多的幫助。它是一個http 300x'位置:'重定向? ''刷新重定向? JavaScript重定向?我們不能準確回答這個問題,沒有這個信息... – hanshenrik

回答

0

您將需要獲取標題。這將告知curl在其響應中包含標題。

curl_setopt($this->curl, CURLOPT_HEADER, TRUE); 

一旦你的頭,你可以通過它們解析看到該網址是什麼,該網站重定向你。

+0

OP不說如何重定向工作。這將工作,如果重定向是基於標頭..如果它是一個標準的HTTP(300x)重定向,'CURLOPT_FOLLOWLOCATION'就足夠了,然後捲曲遵循http 300x自動重定向....但直到OP告訴我們重定向的工作方式,我們只能假設..例如,如果它是一個基於JavaScript的重定向,這完全沒有幫助:P – hanshenrik

+0

@hanshenrik這是關於JS登錄的好處。 –

+0

謝謝@NickCoons ... –