PHP-скрипт, который работает при получении og: image из URL, но не работает на определенных - PullRequest
1 голос
/ 22 сентября 2019

Здравствуйте, я пытаюсь создать собственный скрипт в php, который выбирает свойство og: image из массива и затем выводит конкретный результат.Я использовал следующий код

<?php
$_URL = $_GET['url']; //getting the url from THE url value
function getSiteOG( $url, $specificTags=0 ){
    $doc = new DOMDocument();
    @$doc->loadHTML(file_get_contents($url));
    $res['title'] = $doc->getElementsByTagName('title')->item(0)->nodeValue;
    foreach ($doc->getElementsByTagName('meta') as $m){
        $tag = $m->getAttribute('name') ?: $m->getAttribute('property');
        if(in_array($tag,['description','keywords']) || strpos($tag,'og:')===0) $res[str_replace('og:','',$tag)] = $m->getAttribute('content');
    }
    return $specificTags? array_intersect_key( $res, array_flip($specificTags) ) : $res;
}
$_ARRAY = getSiteOG("$_URL");
echo $_ARRAY['image'];
?>

и при использовании со следующим синтаксисом, например, на нашем сайте

tags.php?url=http://www.stackoverflow.com

, он печатает следующий результат

https://cdn.sstatic.net/Sites/stackoverflow/img/apple-touch-icon@2.png?v=73d79a89bded

Это приемлемо.

Сценарий выполняется для командного файла с использованием следующего метода

@echo off
PowerShell -Command "(new-object net.webclient).DownloadString('http://yoursite.com/tags.php?url=https://www.banggood.com/TKEXUN-M2-Flip-Phone-2800mAh-3_0-inch-Touch-Screen-Blutooth-FM-Dual-Sim-Card-Flip-Feature-Phone-p-1367504.html')"
PowerShell -Command "(new-object net.webclient).DownloadString('http://yoursite.com/tags.php?url=https://www.banggood.com/Xiaomi-Mi-9T-Pro-Global-Version-6_39-inch-48MP-Triple-Camera-NFC-4000mAh-6GB-64GB-Snapdragon-855-Octa-core-4G-Smartphone-p-1547570.html?ID=564486&cur_warehouse=HK')"
PowerShell -Command "(new-object net.webclient).DownloadString('http://yoursite.com/tags.php?url=https://www.banggood.com/OnePlus-7-6_41-Inch-FHD-AMOLED-Waterdrop-Display-60Hz-NFC-3700mAh-48MP-Rear-Camera-8GB-256GB-UFS-3_0-Snapdragon-855-Octa-Core-4G-Smartphone-p-1499559.html?ID=62208216150349&cur_warehouse=HK')"

, который в свою очередь выводит на экран результирующие ссылки или когда pipe'dдля файла в файл screenshot он также работает со списком URL-адресов файла в другом пакетном скрипте, но теперь это не имеет значения

Проблема, с которой я сталкиваюсь -

Когда я пытаюсь получить ссылки на ссылки og: image, как, например, на сайте gearbest, например,

https://www.gearbest.com/headsets/pp_009839056462.html

Я не получаю результатов !!!

Я запустил простые команды, такие как wget -qO- url или curl -I url для заголовков, и в результате он как-то связан с тем, как мой php был скомпилирован, или даже завитками на стороне SSL.Я прочитал здесь , что некоторым сайтам требуется более новый безопасный ssl и т. Д.

Чтобы отметить, я также пытался маскировать запрос wget, меняя пользователя Агент и другие значения, связанные с cookie, на лету, но все еще с без успеха.

Я на общем хостинге с доступом к оболочке в тюрьме, но со многими бинарными инструментами, sed / awk / wget / curl и т. д. и хост-сайт весьма полезен, помогая мне решить мои проблемы путем добавления бинарных файлов, которые мне могут понадобиться, но все же я не знаю, как действовать.

Любойпомощь очень ценится

1 Ответ

2 голосов
/ 22 сентября 2019

Вы, вероятно, заблокированы из-за вашего пользовательского агента.Я также попытался свернуться с gearbest и получил ошибку 403 «Отказано в разрешении».Akamai, кажется, блокирует этот пользовательский агент.

Но когда я использовал что-то вроде curl -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (K HTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" URL, оно работало нормально.

...