如何解决使用 cURL 获取 TikTok 最终帖子 URL
我希望对 TikTok 帖子 URL 进行 cURL 并跟踪它经过的每个单独的 URL。
在此示例 (https://vm.tiktok.com/ZMeh1yKUQ/) 中,我在浏览器中收到 https://m.tiktok.com/v/6841927751578946822.html 而不是最终网址:https://www.tiktok.com/@ibruno_maciel/video/6841927751578946822
function getWebPage($url,$redirectcallback = null){
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,false);
curl_setopt($ch,CURLOPT_HEADER,true);
curl_setopt($ch,CURLOPT_NOBODY,CURLOPT_TIMEOUT,10);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,CURLOPT_USERAGENT,"Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1) Gecko/20061024 BonEcho/2.0");
$html = curl_exec($ch);
$http_code = curl_getinfo($ch,CURLINFO_HTTP_CODE);
if ($http_code == 301 || $http_code == 302) {
list($httpheader) = explode("\r\n\r\n",$html,2);
$matches = array();
preg_match('/(Location:|URI:)(.*?)\n/',$httpheader,$matches);
$nurl = trim(array_pop($matches));
$url_parsed = parse_url($nurl);
if (isset($url_parsed)) {
if($redirectcallback){ // callback
$redirectcallback($nurl,$url);
}
$html = getWebPage($nurl,$redirectcallback);
}
}
return $html;
}
function trackAllLocations($newUrl,$currentUrl){
echo $currentUrl.' ---> '.$newUrl."\r\n";
}
getWebPage('https://vm.tiktok.com/ZMeh1yKUQ/','trackAllLocations');
有什么建议吗?
解决方法
不是 100% 确定为什么,但是如果您调试发回的标头以检查它想要重定向的方式...
对于 301 响应...
Location: https://m.tiktok.com/...
对于 302...
location: https://www.tiktok.com/@ib...
所以你的正则表达式没有找到 Location
,一个快速的解决方法是让搜索不区分大小写(使用 /i
标志)...
preg_match('/(Location:|URI:)(.*?)\n/i',$httpheader,$matches);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。