J'essaie d'obtenir le titre de quelques pages en PHP avec ce code. Cela fonctionne bien avec presque tous les liens, sauf quelques-uns, par exemple avec 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);
Il fait écho
Attention ! | Cloudflare
qui semble être protégé par une page de vérification du robot Cloudflare. Mais lorsque j'essaie de publier ce lien sur un réseau social, ils sont capables d'obtenir le titre et toutes les métadonnées requises. Comment cela est-il possible ?
Edita:
Même si j'utilise l'API opengraph.io, j'obtiens :
"root":{
"error":{
"code": 2005
"message": "Got 403 error from server."
}
}