2016-08-16 52 views
0

這是我遇到過的最困難的事情之一,可能沒有程序化解決方案。如何使用沒有文件路徑的php檢索再生的pdf文檔?

我颳了一個市政網站作爲判決留置權。結果頁面有兩個框架,即左框架和右框架。左邊框架html是直接的,而不是問題。右邊的框架產生一個pdf文檔,對應於在左邊框架中找到的案例#。

這是實際案例頁面的0​​。請注意,我已經採取了虛擬點擊的方式來同意TOS,因此我的刮取了一個實際的案例頁面,而不是T.O.S。頁。

要獲取頁面內容需要兩個單獨的擦除,在這裏我使用cURL發送TOS協議,並且我不會爲您提供代碼示例。

第一卷曲緊接着,我送第二捲曲獲取內容,這相當成功的作品:

function getHtml($url, $post = null) { 
    $content = ""; 
    $string = "Authenticated=0&AccessLevel=z58jgxoXvjk=&AgentKey=&CacheKey=25735097.0777&LastUrl=".urlencode($url); 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_COOKIE, "$string"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    if(!empty($post)) { 
     curl_setopt($ch, CURLOPT_POST, true); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
    } 
    $result = curl_exec($ch); 
    curl_close($ch); 
    return $result; 
} 

我已經解決了在結果頁面兩個框架的URL,所以它沒有我很好地控制基本頁面,因爲這會導致一個對象未​​找到錯誤(因爲它是一個框架頁面)。

我打電話與左框架:

$leftframeurl = "https://officialrecords.broward.org/oncoreV2/details.aspx?id=47386935"; 
$leftframecontent = getHtml($leftframeurl); 
echo $leftframecontent . "<br><br>"; 

...如果我這樣做,我得到我可以使用simple_html_dom解析HTML內容。

但有一個PDF掃描文檔涉及到這種情況,並出現在右手邊框,你可以看到,如果你使用瀏覽器手動進行搜索。

的URL右手框架實際上做了重定向來自:

https://officialrecords.broward.org/oncoreV2/ImageBrowser/ShowPDF.aspx

到:

https://officialrecords.broward.org/oncoreV2/ImageBrowser/SinglePagePdf.aspx

其中,去年url是PDF格式的URL。你可以看到任何一個url都沒有查詢字符串變量,沒有「id = 47386935」,也沒有「47386935.pdf」文件位置。沒有什麼可以參考具體的pdf。我似乎很可能在後臺查詢PDF,這是我無法接觸的。

但我想要的是以某種方式訪問​​該案件的PDF。

我也嘗試了不同的捲曲,發送PDF標題是這樣的:

function getPDF($id,$url){ 
    $content = ""; 
    $string = "Authenticated=0&amp;AccessLevel=z58jgxoXvjk=&amp;AgentKey=&amp;CacheKey=25735097.0777&amp;LastUrl=".urlencode($url); 
    $request = ""; 
    $ch = curl_init(); 
    curl_setopt_array($ch, array(
     CURLOPT_COOKIE => "$string", 
     CURLOPT_URL => $url, 
     CURLOPT_HTTPHEADER => array('Cache-Control: public', 'Content-type: application/pdf'), 
     CURLOPT_HEADER => TRUE, 
     CURLOPT_RETURNTRANSFER =>true, 
     CURLOPT_FOLLOWLOCATION => FALSE, 
     CURLOPT_VERBOSE => true, 
     CURLOPT_POST => FALSE 
    )); 
    $result = curl_exec($ch); 
    curl_close($ch); 
    return $result; 
} 

$content = getPDF('47386935','https://officialrecords.broward.org/oncoreV2/ImageBrowser/SinglePagePdf.aspx'); 

...但是,這不是給我看任何的愛。

+0

檢查瀏覽器在您正常打開頁面時發送的所有內容。該pdf腳本可能會檢查查閱者,也許有一個cookie。 **必須在某個時間發送*以確定應該輸出哪個pdf。 –

+0

@MarcB推薦人沒有任何幫助,但是...等一下......這裏有一個不同的cookie ......幾分鐘後回報。 – TARKUS

回答

1

它來自Javascript代碼,調用ImageBrowser/default.aspx?id=47386935&dtk=FJ

<script language="javascript"> 
parent.doc.location.href="ImageBrowser/default.aspx?id=47386935&dtk=FJ" 
</script> 

該接收的URL,然後設置了一些餅乾文檔ID和URL然後打開ShowPDF.aspx它使用cookie中的值來投放相應的PDF。

因此,提取該ImageBrowser URL,用cURL調用它,以便設置適當的cookie,然後獲取ShowPDF.aspx,並且它應該包含您正在查找的內容。

view-source:https://officialrecords.broward.org/oncoreV2/ImageBrowser/default.aspx?id=47386935&dtk=FJ 
+0

看起來很有希望,對嘗試這種解決方案感到非常興奮。該網址絕對會導致瀏覽器重定向到第二個網址,並在我的瀏覽器中輸出pdf。現在,如果我只能使用cURL複製動作。 – TARKUS

+0

我知道如何在cURL中發送cookie,但我從來不會使用cURL來獲取cookie。 – TARKUS

+0

只需將'CURLOPT_COOKIEFILE'設置爲空字符串,並對所有請求重複使用相同的捲曲手柄(無論如何,這是一個很好的做法),它會自動處理所有的Cookie,並重新使用現有的連接,會更快。 – drew010

相關問題