使用Curl PHP获取最终重定向
我必须从this:获取最终重定向url,它实际上重定向到: 我尝试了其他stackoverflow答案的答案,这些答案适用于其他网站,但不适用于上面的链接 我已尝试提取常规位置标题:使用Curl PHP获取最终重定向,php,redirect,curl,http-headers,url-redirection,Php,Redirect,Curl,Http Headers,Url Redirection,我必须从this:获取最终重定向url,它实际上重定向到: 我尝试了其他stackoverflow答案的答案,这些答案适用于其他网站,但不适用于上面的链接 我已尝试提取常规位置标题: if(preg_match('#Location: (.*)#', $html, $m)) $l = trim($m[1]); 还检查了javascript方式: preg_match("/window\.location\.replace\('(.*?)'\)/", $html, $m) ? $m[1] :
if(preg_match('#Location: (.*)#', $html, $m))
$l = trim($m[1]);
还检查了javascript方式:
preg_match("/window\.location\.replace\('(.*?)'\)/", $html, $m) ? $m[1] : null;
请帮忙 与CURLINFO\u REDIRECT\u URL
或CURLINFO\u EFFECTIVE\u URL
一起使用,具体取决于您的用例
CURLINFO\u REDIRECT\u URL
-禁用CURLOPT\u FOLLOWLOCATION
选项:在上一个事务中找到的重定向URL,接下来应手动请求。启用CURLOPT\u FOLLOWLOCATION
选项时:该选项为空。这种情况下的重定向URL可在CURLINFO\u EFFECTIVE\u URL
--
例子:
我以前试过,只是又试了一次,但出于某种原因,它会输出初始url。。。你能修改代码让它工作吗?你链接的代码有两个问题。1) 您正在测试的url无效。(您可以将其更改为
https://google.com/
,它重定向到https://www.google.com/)2)调用curl\u getinfo($ch,CURLINFO\u EFFECTIVE\u URL)
需要在调用curl\u exec($ch)
后立即移动,因为在调用时,重定向还没有被遵循。感谢您指出,但是我测试的url是有效的,因为它是我运行curl的url(在问题描述中也提到过),我也尝试过不同的getinfo调用位置,但它仍然返回相同的结果。。。看起来重定向是在初始页面加载几秒钟后通过Javascript或某些刷新元标记完成的,curl不会跟随页面。请检查问题中提供的链接。我指的无效url就是那个,这绝对不对。它在域名中有一堆点,点,点。而且,curl不解析任何javascript。您只能使用curl执行HTTP级别的重定向。我将用一个仅适用于curl的示例来更新我的代码,以说明HTTP重定向功能https://w...content-available-to-author-only...e.org/web/20070701005218/http://w...content-仅对作者可用…s.com/
这是网站()在php脚本中屏蔽URL的方式,并且它只对post author可用,但它不会影响脚本工作(您可以通过分叉/编辑它来重新运行它)。该站点只是一个php沙盒。若你们的例子不能从问题描述中找到url,我不能接受。正如问题所述,我以前尝试过不同的解决方案,包括您提供的解决方案,但我正在寻找针对特定url的解决方案
<?php
$url = 'https://google.com/';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$html = curl_exec($ch);
$redirectedUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
curl_close($ch);
echo "Original URL: " . $url . "\n";
echo "Redirected URL: " . $redirectedUrl . "\n";
Original URL: https://google.com/
Redirected URL: https://www.google.com/