Невозможно получить файл file_get_contents на некоторых сайтах (PHP)

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

$raw  = file_get_contents($src);
$img  = imagecreatefromstring($raw);
// and others gd stuff

На самом деле он работает нормально, за исключением случаев, когда он поступает с определенного веб-сайта, такого как pixiv
http://i2.pixiv.net/img02/img/suzupin/2800349.jpg
Это, например, выдает некоторые ошибки

Кстати, то же самое происходит, когда я пытаюсь установить PIN-код на Pinterest =P
ПОЧЕМУ?

Есть ли способ запретить другим делать такие вещи, как file_get_contents на моем сайте?
Правильно ли я говорю, что это как-то связано с oriental websites? Потому что довольно часто я не могу пин-кодить изображения из японских источников. >.‹


person Diego T. Yamaguchi    schedule 09.06.2013    source источник
comment
ваша ссылка вообще не работает. (403 запрещено)   -  person RienNeVaPlu͢s    schedule 09.06.2013
comment
@RienNeVaPlus Я думаю, он пытается сказать, что ссылка не работает. И в этом проблема.   -  person cmt    schedule 09.06.2013
comment
кк, я только что заменил сейчас. На самом деле, ссылки не имеют значения, на самом деле. Источник (pixiv) все равно выдает ошибки   -  person Diego T. Yamaguchi    schedule 09.06.2013
comment
prevent file_get_contents Нет, нет. Вы можете заблокировать IP-адрес, который выглядит подозрительно, но file_get_contents или CURL — это такой же реальный запрос, как и любой другой пользователь, использующий свой браузер для запроса ресурса.   -  person Dave Chen    schedule 09.06.2013
comment
Тот тоже не работает. Я думаю, что Pixiv ищет файл cookie или ссылку, которых у нас нет.   -  person    schedule 09.06.2013
comment
@duskwuff: Вы правы. pixiv.net требует регистрации.   -  person Dave Chen    schedule 09.06.2013
comment
StackOverflow пугает ò.o Не прошло и минуты, а у меня уже есть несколько ответов ^^   -  person Diego T. Yamaguchi    schedule 09.06.2013
comment
Посмотрите на «предотвращение горячих ссылок». Существует множество различных методов, предложенных некоторыми @duskwuff, — файлы cookie, проверка реферера, сеансы и т. д. Возможно, это то, что происходит.   -  person cmt    schedule 09.06.2013
comment
Ках! Как больно. Значит, я ничего не могу с этим поделать? Что ж, (после беглого прочтения) кажется, я понял, что такое предотвращение хотлинков. Спасибо всем!   -  person Diego T. Yamaguchi    schedule 09.06.2013
comment
Конечно, есть обходные пути. Они просто требуют немного больше работы. stackoverflow.com/questions/13168198/   -  person cmt    schedule 09.06.2013
comment
@cmt Спасибо!! Мол, ты дал мне абсолютно правильный ответ! Это сработало очень хорошо. Если бы это был не комментарий, мой ✓ принадлежал вам.   -  person Diego T. Yamaguchi    schedule 09.06.2013
comment
Рад, что смог помочь. Я разместил фрагменты этих комментариев в качестве ответа, поэтому этот вопрос можно закрыть. Я не хочу тратить время других людей, заставляя их пытаться ответить на вопрос, на который у вас уже есть решение.   -  person cmt    schedule 09.06.2013


Ответы (2)


Происходит то, что эти веб-сайты внедряют «предотвращение горячих ссылок». Существует множество различных методов, предложенных @duskwuff, — файлы cookie, проверка реферера, сеансы и т. д.

Что вы хотите сделать, так это обойти предотвращение горячих ссылок, и на это есть ответ в этом вопросе SO: Скачать файл из URL-адреса с помощью CURL

person cmt    schedule 09.06.2013

Вы можете использовать форму входа или капчу, а затем разрешить просмотр изображений и тестовую версию браузера и т. д., но если пользователь использует завиток с файлами cookie (я не знаю, как использовать файл cookie с file_get_contents, тогда трудно запретить пользователю.

person user2380555    schedule 09.06.2013
comment
Вопрос не в том, как реализовать это поведение. - person ; 09.06.2013
comment
он спросил, Is there a way to prevent the others to do things like file_get_contents on my site? разве это не реализует такое поведение? - person user2380555; 09.06.2013
comment
хотя наиболее подходящим ответом для этого был hotlink prevetion - person Diego T. Yamaguchi; 09.06.2013