Jump to content
  • 0

Сервер не отдаёт файл по прямой ссылке


Anechka
 Share

Question

Здравствуйте! Если сайт который я пытаюсь парсить и у меня есть прямые ссылки на все файлы которые мне нужны с этого сайта и которые были собраны заранее (все файлы графические - jpg). На сайте какая-то защита, существует конкретное число файлов которые можно скачивать с него а если идёт превышение то по этим прямым ссылка открывается просто пустота. Как такое может быть если я обращаюсь по прямым ссылкам, что сейчас по этой ссылке графика, а потом пустота? Как обойти такое ограничение?

P.S. У меня нет нормальных прокси а всё что пробовала - очень тормозное но тем не менее через них всё работает какое-то время и каждый лимит нужно просто менять прокси но речь идёт про огромное количество файлов и такой способ просто не подходит.

Как обойти эту защиту? Помогите советом пожалуйста!

Спасибо!

Link to comment
Share on other sites

20 answers to this question

Recommended Posts

  • 0
2 минуты назад, Anechka сказал:

Печально, а может быть можно как-нибудь посмотреть все пути запроса? Куда он идёт, куда там редирект и т.д. Я думаю что всё таки как-то это можно всё провернуть но здесь я уже ничего не буду говорить - вот здесь уже правда мне не хватает навыков.

Я уже дал вам ответ выше. Если других путей нет то tor+php, лучше медленно, но верно чем никак. И кстати когда я использовал такую связку, а было это лет 6 назад, работало оно не так уж и медленно, плюс не нужно забывать что грамотно написанный скрипт может делать и по 10 параллельных запросов =)) и 20 )) Все ограничено только ресурсами сервера откуда идут запросы, и сервера который их обрабатывает.

Link to comment
Share on other sites

  • 0

На многих хостингах есть ограничение на количество запрашиваемых файлов в единицу времени, если парсите из php попробуйте просто в каждом витке цикла вставьте sleep(1) перед запросом

  • Like 1
Link to comment
Share on other sites

  • 0
19 часов назад, wwt сказал:

На многих хостингах есть ограничение на количество запрашиваемых файлов в единицу времени, если парсите из php попробуйте просто в каждом витке цикла вставьте sleep(1) перед запросом

Там не всё так просто, парсю Курлом и библиотекой simple_html_dom. Помогает только прокси но в моём случаи если посчитать то их нужно более 6.000 штук что невозможно. Просто картинка открывается по прямой ссылке, если запрашивать её до тех пор пока лимит не исчерпан то она и дальше будет открываться, после окончания лимита там становится просто пустота.

Слипы, юзерагенты и реферреры это всё фигня полная!

В общем мне даже на Тостере никто не смог помочь и я уже поняла что никак это не обойти. :(

Link to comment
Share on other sites

  • 0
15 минут назад, wwt сказал:

очень даже обойти =) Ищите в интернете по фразе "tor+php" =)

Вот и там тоже говорили - Тор. Я согласна что он помогает но он такой медленный что работать с ним - одни муки. Что лично Вы имеете ввиду под связкой Тора и Пхп?

Link to comment
Share on other sites

  • 0
35 минут назад, wwt сказал:

если других путей нет то уж лучше медленно чем никак. а имею ввиду то что можно делать запросы через тор сеть из php.

Как думаете, я за 10 лет сумею спарсить то что мне нужно таким образом? Речь идёт не по 1.000 картинок, не про 2 и не про 3, их около 600.000!

Это конечно единственный вариант - то что Вы предлагаете, но он очень кропотливый и долгий, по этому я его не рассматриваю, по этому я и написала что "никак не обойти" потому что это не обход защиты как таковой!

Есть ещё вариант с ножом но по моему это не тот случай где нужно его применять. Я имею ввиду взять нож, приехать к дата центру ну и Вы понимаете...

ВСЕМ СТОЯТЬ! ЭТО ОГРАБЛЕНИЕ! ДОСТАВАЙТЕ ВСЕ КАРТИНКИ ВОН С ТОГО СЕРВЕРА, БЫСТРО!

Ну а если серьёзно, кто-нибудь может мне объяснить как такое возможно... что есть самая наипремейшая ссылка которая ведёт на картинку, но через какое-то время эта же ссылка уже не показывает эту картинку, как такое возможно? Если не заходить в течении дня на сайт и не лазить по нему а только пытаться брать картинки по прямым ссылкам которые заранее были собраны то всё равно защита крутить этот счётчик лимита. Как сервер может такое делать если я обращаюсь к страницам на которых нет никаких скриптов, ничего нет кроме одной картинки. Я вот этого понять не могу. :(

Link to comment
Share on other sites

  • 0

Знаете, возможно там просто стоит кеширование. Помнится мне я парсил картинки (около 20000 штук) с сайта который держал картинки на хостинге картинок, не помню точно каком именно. Так там для того чтобы картинка попала в кеш нужно было сначала зайти на нужную страницу, а уж потом качать картинку по прямому адресу, Со временем картинки из кеша естественно пропадали. А отдавать белую картинку вместо существующей если её нет в кеше очень просто это можно сделать с помощью модреврайта.

  • Like 1
Link to comment
Share on other sites

  • 0
3 часа назад, wwt сказал:

Знаете, возможно там просто стоит кеширование. Помнится мне я парсил картинки (около 20000 штук) с сайта который держал картинки на хостинге картинок, не помню точно каком именно. Так там для того чтобы картинка попала в кеш нужно было сначала зайти на нужную страницу, а уж потом качать картинку по прямому адресу, Со временем картинки из кеша естественно пропадали. А отдавать белую картинку вместо существующей если её нет в кеше очень просто это можно сделать с помощью модреврайта.

Получается что вроде как способ есть, но если брать во внимание сколько этой графики в общем количестве нужно взять (а ещё некоторые картинки достигают размера аж в 30 мб) то таким способом практически невозможно пользоваться. Я уже молчу про то что не всегда парсинг графики идёт замечательно, бывает картинки не до конца загружаются по непонятной опять же для меня причине и внизу появляются серые полосы и при таком количестве этого будет я думаю очень много. В общем всё сложно.

Вчера пробовала топовый буржуйский сайт по этой тематики парсить (на нём даже ещё больше этой графики) и Вы знаете, та всё замечательно прошло и было бы вообще всё замечательно но хлебные крошки там не такие качественные и их не так много у каждой картинки, ну а без них сами понимаете, смысла в голых картинках мало.

В любом случаи Вам огромное спасибо за то что не остались равнодушны!

Link to comment
Share on other sites

  • 0

Кеширования там скорее всего нет, все картинки лежат на поддомене, выдача судя по-всему осуществляется через скрипт который вполне может анализировать посетителя по различным параметрам и выдавать картинку или не выдавать. То что вы обращаетесь к картинке по адресу вида "http://site.ru/image.jpg" ещё не значит что вы обращаетесь к физическому файлу =) простейшая переадресация с помощью модреврайта всех запросов на скрипт с последующей выдачей может быть для вас и незаметна =) И сделано это как раз чтобы защититься от выкачивания контента. Чтобы обойти нужно анализировать на каком моменте скрипт прекращает выдавать контент, это может зависеть от частоты запросов, юзерагента, ip, реферера, подсети, страны и т.д. причем анализ может осуществляться сразу по всем показателям в комплексе. теоретически это все можно обойти, но для этого нужны соответствующие навыки и время. И даже после этого никто не даст гарантию что все будет стабильно, ибо владельцы кроме этого могут анализировать саму статистику запросов и если увидят всплеск обращений к оригиналам картинок тупо изменят алгоритм анализа.

Link to comment
Share on other sites

  • 0
27 минут назад, wwt сказал:

Кеширования там скорее всего нет, все картинки лежат на поддомене, выдача судя по-всему осуществляется через скрипт который вполне может анализировать посетителя по различным параметрам и выдавать картинку или не выдавать. То что вы обращаетесь к картинке по адресу вида "http://site.ru/image.jpg" ещё не значит что вы обращаетесь к физическому файлу =) простейшая переадресация с помощью модреврайта всех запросов на скрипт с последующей выдачей может быть для вас и незаметна =) И сделано это как раз чтобы защититься от выкачивания контента. Чтобы обойти нужно анализировать на каком моменте скрипт прекращает выдавать контент, это может зависеть от частоты запросов, юзерагента, ip, реферера, подсети, страны и т.д. причем анализ может осуществляться сразу по всем показателям в комплексе. теоретически это все можно обойти, но для этого нужны соответствующие навыки и время. И даже после этого никто не даст гарантию что все будет стабильно, ибо владельцы кроме этого могут анализировать саму статистику запросов и если увидят всплеск обращений к оригиналам картинок тупо изменят алгоритм анализа.

Я обращаюсь не к тем ссылкам которые Вы предположили, я обращаюсь именно к прямым ссылкам где разные поддомены. На тех страницах нет никаких скриптов да и быть не может, там просто тупо картинка в исходном коде и всё. То что Вы говорите что там где-то есть скрипты, да они есть на пути к оригиналу, но это если переходить по сайту но я этого не делаю и скрипты меня эти не видят, я обращаюсь сразу тупо по прямым и лимит всё равно как-то вычисляется. Когда парсер собирал прямые ссылки он собирал сначала ссылки на превью и потом с помощью str_replace заменял значения в строке что приводило на выходе к самой наипремейшей ссылке на ту или иную картинку. Закономерности есть везде! Не считайте меня такой уж прям глупой - это всё давно уже пройдено то что Вы говорите и сайт изучен вдоль и поперёк но ответ так и не был найден. :(

Отбрости всё, все скрипты и всё такое. По факту есть ссылка - она прямая. Я на неё захожу - опа, картинка есть. Я обновляю страницу - опа, опять она есть. Я делаю так примерно 60 раз - опа, пустота. Вот такие вот пироги. Скриптов нет. Как? Я не понимаю!

Link to comment
Share on other sites

  • 0

О чем я и говорю, у вас нет необходимых навыков, ибо вы даже не поняли половины того что я написал выше =) Поймите по адресу

http://site.ru/image.jpg

может быть вовсе никакая не картинка =)

 

UPD если не понимаете о чем я говорю, вот вам ссылка

http://kyrtgod.ru/test.jpg

  и попробуйте пообновлять страницу раз 10.

Link to comment
Share on other sites

  • 0
32 минуты назад, wwt сказал:

О чем я и говорю, у вас нет необходимых навыков, ибо вы даже не поняли половины того что я написал выше =) Поймите по адресу

http://site.ru/image.jpg

может быть вовсе никакая не картинка =)

 

UPD если не понимаете о чем я говорю, вот вам ссылка


http://kyrtgod.ru/test.jpg

  и попробуйте пообновлять страницу раз 10.

Я прекрасно Вас понимаю и в свою защиту хочу сказать что сейчас я Вам в личку всё таки отправлю ссылку на Тостер с этим моим вопросом и вот цитата одного из последний моих комментариев:

Цитата

Я вот сейчас начала думать - а что если прямая ссылка генерируется и что по факту она только визуально как прямая ну а на деле нет? Может же такое быть?

Судя по дате на Тостере, мне ещё неделю назад пришла в голову такая мысль но я ничего не смогла нарыть по этому поводу. :(

Хорошо, подскажите мне тогда как узнать истинный прямой адрес или это просто невозможно?

ОФФТОПИК: признавайтесь, сколько сейчас человек сидят с попкорном? :D

Link to comment
Share on other sites

  • 0
11 минуту назад, Anechka сказал:

просто невозможно

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

PS А в защиту не нужно ничего говорить, я же вас не обвиняю =)

  • Like 1
Link to comment
Share on other sites

  • 0
1 минуту назад, wwt сказал:

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

Печально, а может быть можно как-нибудь посмотреть все пути запроса? Куда он идёт, куда там редирект и т.д. Я думаю что всё таки как-то это можно всё провернуть но здесь я уже ничего не буду говорить - вот здесь уже правда мне не хватает навыков.

Link to comment
Share on other sites

  • 0

по тому адресу что я вам дал для теста лежит вот такой простейший скрипт написанный за 30 секунд

<?php

if($_GET['q'] == 'test.jpg'){
    $n = +file_get_contents('./s.txt');
    
    file_put_contents('./s.txt', ++$n);
    
    if($n <=3){
        header('Content-Type: image/jpeg');
        echo file_get_contents('./kgfric.jpeg');
    }else{
        echo 'фигушки';
    }
    if($n >=6) unlink('./s.txt');
}

и настройки реврайта в .htaccess

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

А что лежит на сервере того сайта только владельцам известно =) Но теоретически там может быть что угодно =)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy