Я работаю над приложением для 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-адрес, где изображение встроено в текст, защита от хотлинка срабатывает.
Ты можешь использовать curl_setopt сказать cURL, какого реферала отправить:
curl_setopt($ch, CURLOPT_REFERER, 'http://www.google.com');
Увидеть документация для более подробной информации, но это все, что нужно сделать
Других решений пока нет …