gpt4 book ai didi

php - 如何从返回 403 Forbidden 的站点的 PHP 中获取 URL 的标题

转载 作者:行者123 更新时间:2023-12-04 15:22:37 27 4
gpt4 key购买 nike

我试图用这段代码在 PHP 中获取一些页面的标题。除了少数链接(例如 9gag)外,它几乎适用于所有链接。

function download_page($url)
{
$agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36';

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);

return $data;
}

function get_title_tag($str)
{
$pattern = '/<title[^>]*>(.*?)<\/title>/is';

if(preg_match_all($pattern, $str, $out))
{
return $out[1][0];
}
return false;
}

$url = "https://9gag.com/gag/avPBX3b";

$data = download_page($url);

echo $extracted_title = get_title_tag($data);

echo

Attention Required! | Cloudflare

这似乎受到 Cloudflare 机器人验证页面的保护。但是当我尝试在任何社交网络上发布此链接时,他们能够获得标题和所需的所有元数据。怎么可能?

编辑:

即使我使用 opengraph.io API,我也会得到:

"root":{
"error":{
"code": 2005
"message": "Got 403 error from server."
}
}

最佳答案

只需替换代理字符串,它应该可以正常工作,来自:

$agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36';

到:

$agent = 'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)';

我看到如果存在标准代理字符串,CloudFlare 已启用验证码验证,因此这很容易绕过它。我对这里的安全性感到困惑,但这超出了这个问题的范围

关于php - 如何从返回 403 Forbidden 的站点的 PHP 中获取 URL 的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62997650/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com