Используйте PHP Curl, чтобы обойти защиту Hotlink

Я работаю над приложением для Android, которое взаимодействует с форумом, который я посещаю. Сотрудники форума разрешают это приложение, но не дают API для работы.

Чтобы получить необходимую информацию, я использую промежуточный PHP-скрипт, который очищает форум от CURL. Все работает просто замечательно, за исключением одной маленькой детали.

Для просмотра тем я собираю все данные, которые мне нужны, такие как имя автора, дата и содержание сообщения. Но поскольку изображения, хранящиеся на их сервере, защищены по хотлинкам, я не могу их увидеть. Самое смешное, что просмотр отдельных изображений не составляет проблем, но всякий раз, когда они помещаются в контекст, они заменяются изображениями, защищенными авторским правом сайтов.

У меня такое ощущение, что веб-сайт изменяет отправляемый мной HTTP-реферер (который пуст) и, следовательно, отвечает сообщением об авторских правах (защита от хотлинков).

Может кто-нибудь дать мне несколько советов, как решить эту проблему?

Код, который я использую:

$url = 'someurliwanttoscrape';
$cookie_string = 'somecookies';
$useragent = 'someuseragent';
$timeout = 60;

$rawhtml = curl_init();
curl_setopt ($rawhtml, CURLOPT_URL,$url);
curl_setopt ($rawhtml, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($rawhtml, CURLOPT_REFERER, '');
curl_setopt ($rawhtml, CURLOPT_COOKIE, $cookie_string);
curl_setopt ($rawhtml, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt ($rawhtml, CURLOPT_USERAGENT, $userAgent);
$output = curl_exec($rawhtml);
curl_close($rawhtml);

Это работает всякий раз, когда я помещаю туда ссылку на изображение. Нет проблем, я вижу изображение, нет защиты от хотлинков. Но как только я помещаю URL-адрес, где изображение встроено в текст, защита от хотлинка срабатывает.

1

Решение

Ты можешь использовать curl_setopt сказать cURL, какого реферала отправить:

curl_setopt($ch, CURLOPT_REFERER, 'http://www.google.com');

Увидеть документация для более подробной информации, но это все, что нужно сделать

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]