我需要從一個鏈接中檢索重定向的URL,但是當我拉出頭資訊時,它只是回傳:
我需要檢索重定向的URL。
Locations: redirecting...
之后,頁面被重定向到我想要贖回的URL。 我使用的代碼是:
$url = 'http://168.0.51.253:8000/boleto/74140-P2UTT5T4IH/'。
//我想檢索的最終URL = https://data.galaxpay.com.br/prooverisp/boleto/202109YB0K77L7WYP5PPY0NGT6DMKOD01155936。
$ch = curl_init()。
curl_setopt($ch, CURLOPT_URL, $url) 。
curl_setopt($ch, CURLOPT_HEADER, true)。
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false)。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true)。
$a = curl_exec($ch)。
curl_close($ch)。
$headers = explode("
", $a)。)
$j = count($headers) 。
$ticket = null;
for ($i = 0; $i < $j; $i ) {
if (strpos($headers[$i], "Location:"/span>) !== false) {
$ticket = trim(str_replace("Location:", "", $headers[$i])。)
break。
}
}
var_dump($headers)。
我怎樣才能等待重定向并檢索到最終的URL?我是用PHP作業的。
uj5u.com熱心網友回復:
你試圖從第一個鏈接中抓取一個重定向(又稱位置)頭,但是當你在瀏覽器中禁用JavaScript打開它時,你會發現沒有。事實上,你總是得到一個回應代碼200而沒有位置頭。
實際上,有一個javascript可以立即將你重定向到目標URL:
。<! doctype html>
<style type="text/css" media="all">
html, body {
高度。100%。
邊距。0; /* Reset default margin on the body element */
}
iframe {
display: block; /* iframes默認為行內 */
border: none; /* Reset default border */
width: 100%;
高度。100%。
}
</style>
重新啟動...
<script type="text/javascript">
document.location.href="XYZ"。
</script>
XYZ= 你想抓取的目標鏈接,我只是出于隱私原因在這里把它洗掉了。
你可以這樣抓住它:
$url = 'http://1.2.3.4:8000/foo/bar/'; //URL removed for privacy
$ch = curl_init()。
curl_setopt($ch, CURLOPT_URL, $url) 。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true)。
$a = curl_exec($ch)。
curl_close($ch)。
$lines = explode("
", $a)。)
$j = count($lines)。
$ticket = null;
for ($i = 0; $i < $j; $i ) {
if (preg_match('/document.location.href = "(. *)"/', $lines[$i], $matches) {
$ticket = trim($matches[1] )。)
break。
}
}
var_dump($ticket)。
另外,你的陣列回圈有點無緣無故的復雜,所以你可以通過使用foreach來簡化它:
$ticket = null。
foreach (explode("
", $a) as $line) {
if (preg_match('/document.location.href = "(.*)"/', $line, $matches) {
$ticket = trim($matches[1] )。)
break。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/319783.html
標籤:
