13

Иногда, когда я загружаю что-то, я не нахожу ссылки на файлы.

Например, это ссылка для загрузки файла PDF:

http://ishare.down.sina.com.cn/15181391.PDF?ssig=2jEFaNQs7K&Expires=1312905600&KID=sina,ishare&IP=1312761745,68.50.222.

Мне было интересно, как выяснить / взломать фактическую ссылку (т.е. http://*.PDF) на файл?

Как называются такие и похожие методы не показывать прямые ссылки? Некоторые ссылки, такие как Википедия, ...?

14 ответов14

11

Это может быть невозможно. Сайты могут пропустить вас через сотню перенаправлений, прежде чем вы получите файл.

Кроме того, javascript может использоваться для выдачи ссылок на основе URL-адреса, предоставленного серверу.

7

Сайт может быть сценарием, и когда он получает определенную команду (URL-адрес может передать команду), он может затем вернуть файл PDF (или другой файл), без перенаправления. Там это вещь на стороне сервера и зависит от того, как сайт кодируется. Без фактического запроса этой ссылки с сервера вряд ли вы сможете выяснить, как получить файл. И иногда, даже если вы знали прямой URL, у вас может не быть разрешения на доступ к прямой ссылке. Некоторые сайты закодированы так, что прямые ссылки не будут работать.

3

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

Пример обоих здесь. Он перенаправит вас на другой URL-адрес, основываясь на строке 'mkoenig', которая добавляет дополнительные параметры URL-адреса. Перенаправление выполняется в кодировке на стороне сервера, которую вы не сможете (или, по крайней мере, не должны) увидеть. Если вы затем перейдете к «Веб-файлам», перечисленные файлы будут только теми файлами, которые учитель опубликовал. У нее могут быть другие файлы, к которым вы не можете добраться, и которые не будут перечислены. Это также обрабатывается при кодировании на стороне сервера, в отношении того, что оно будет / не вернется.

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

Greg

3

Да, иногда

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

HTTP перенаправление

Это то, что вы видите с Bit.ly и другими сервисами. Что тогда сделать, это предоставить ответ перенаправления HTTP. Когда вы посещаете http://bit.ly/oH3410, он перенаправляет на фактический URL. Иногда один URL перенаправляет на другой. Это может произойти, если вы подключите URL-адрес к http://web-sniffer.net/ или с помощью [curl][1] -I http://bit.ly/oH3410 вы увидите, что 301 указывает на Новое место.

Таким образом, чтобы справиться с перенаправлением HTTP, вам просто нужно зациклить HTTP-запрос HEAD, пока вы не перестанете получать ответы в 300-х (надеюсь, получая 200). Имейте в виду, что они могут перенаправляться в цикле, который никогда не закончится. Вы можете сделать это с помощью CURL или любого другого инструмента HTTP.

Страница загрузчика

Это то, что используют большинство сайтов загрузки. Вы нажимаете на ссылку для скачивания, и вы переходите на страницу с кучей рекламы и сообщаете "Ваша загрузка начнется в ближайшее время", что-то аналогичное. [ Пример ]. С их помощью вы можете попытаться проанализировать фактическую прямую ссылку из URL, но это будет зависеть от конкретного сайта, и большинство сайтов не будут включать ее, чтобы вы не смогли ее обойти. Это делается либо через мета- тег meta http-equiv="refresh" в заголовке, либо через JavaScript (наиболее распространенный). JS обычно имеет запасной заголовок, хотя.

Хотя есть решение. Если вы посмотрите на источник на странице загрузки, вы обычно увидите <meta http-equiv="refresh"> (обычно в <noscript> ) с атрибутом URL который указывает на фактическую загрузку. Поэтому используйте CURL (или любой другой инструмент HTTP), чтобы загрузить страницу, разобрать ее и получить это значение. Сайт может исключить это, хотя, если они хотят быть очень противными, что требует наличия JavaScript для загрузки файлов.

Вероятно, есть блок JavaScript, который также ссылается на загрузку. Он может быть запутан или связан с другого URL. Ваш пробег может варьироваться, пытаясь разобрать это. На странице также может быть "прямая ссылка". Вы можете попробовать несколько методов, чтобы найти это, но опять же это может быть запутано с помощью JavaScript или даже пропущено все вместе.

3

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

В этом конкретном URL-адресе параметры, которые защищены цифровой подписью, четко указывают время и IP-ограничения загрузчика. Для сайта с таким уровнем компетенции вряд ли будут просочиться прямые ссылки.

2

Никогда не возможно выяснить фактическую ссылку.

Сервер обрабатывает запросы к файлам, используя некоторое переписывание WWW (например, для серверов Apache), поэтому, например, вы можете перейти на страницу www.example.com/13-this-site-has-nice-page-name.html , но на самом деле вы могли бы получить доступ к некоторому файлу php с параметром, например: www.example.com/site_handler.php?UID=13

даже если вы обращаетесь к файлу pdf, на стороне сервера может быть перенаправление.

Для загрузки файлов с обработчиками это может быть немного сложнее, так как вы можете перейти на страницу, которая является просто обработчиком загрузки, например: www.example.com?file_downloader.php?param1=7683&param2=jld8ijn, etc... В этом случае скрипт, к которому вы обращаетесь, может быть отправлен с одним заголовком (например, pdf-файл), но на самом деле это php-файл.

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

2

Как и выше, это невозможно. Я рекомендую вам запустить виртуальную машину или взять копию Sandboxie, чтобы в вашем браузере содержались такие ссылки.

редактировать

Не зная, какую операционную систему вы используете, я дам здесь общий ответ.

ВМ это сокращение от виртуальной машины. Это в основном компьютер, созданный программным обеспечением, работающий внутри вашего компьютера. Виртуальная машина будет иметь собственную операционную систему и браузер. Хотя он по-прежнему использует Интернет и жесткий диск вашей машины, он является отдельной машиной с точки зрения ОС. Так что это удобно, как лист бумаги. Все, что происходит внутри виртуальной машины, не влияет на вашу реальную машину.

Virtualbox - это программное обеспечение, которое я рекомендую приобрести для виртуальной машины, если вы не используете Windows, то я бы порекомендовал Virtual PC.

Песочница похожа на виртуальную машину, но она просто изолирует определенные приложения. Вы можете указать, чтобы он запускал копию вашего браузера, а любые файлы или действия, которые он выполняет, по существу перенаправлялись во временную папку. Поэтому, если он пытается загрузить вирус, он перенаправляется во временную папку, которая помещается на карантин с остальной части вашей машины. Он не такой надежный, как виртуальная машина, но он потребляет меньше ресурсов ЦП и памяти и работает быстрее и удобнее.

Я бы попробовал Sandboxie первым. Это меньшая кривая обучения.

1

Когда вы отправляете запрос на веб-сервер (нажмите на ссылку), сервер может отправлять несколько разных ответов. Типичными примерами являются 404 (страница не найдена), 403 (запрещено) или 500 (ошибка сервера). Вероятно, самый распространенный код ответа - 200 (ОК), но вы никогда его не увидите, потому что он обычно сопровождается страницей, которую вы надеялись увидеть.

Здесь есть пара других кодов: 301 и 302. Коды 301 и 302 являются кодами перенаправления, и они сообщают вашему браузеру, что требуемый ответ перемещен в другое место. Основное различие между ними заключается в том, как браузер кеширует вещи. Код 301 означает "перемещен навсегда", и в следующий раз, когда вы попытаетесь перейти по исходной ссылке, браузер может вспомнить, что страница была перемещена и перейти непосредственно в новое местоположение. 302 означает "Найдено в другом месте" и предоставит ссылку, которую ваш браузер должен использовать только временно.

Должна быть возможность написать программу, которая будет проверять ссылку, и до тех пор, пока вы продолжаете получать 30-кратные ответы, следуйте за ответом, пока он, наконец, не получит 200. На этом этапе, вместо загрузки контента, он должен показать вам ссылку.

К сожалению, это также сложнее, чем это. Html-страницу также можно перенаправить на новое место с помощью метатега в разделе заголовка страницы, который выглядит примерно так: <meta http-equiv="refresh" content="0;url=NEW PAGE URL" /> . Таким образом, такая программа уже должна была бы полностью разобрать html, чтобы убедиться, что мы достигли последнего перенаправления.

Кроме того, страница может перенаправить вас дальше, используя javascript, и javascript может быть запутан. Так что теперь наша гипотетическая программа также должна понимать JavaScript. На данный момент у нас есть полнофункциональный веб-браузер. Мы упускаем небольшую мелочь, которая фактически отображает страницу на экране, но в нашей программе есть почти все, что вам нужно для полноценного веб-браузера, включая все сопутствующие проблемы безопасности. Тебе уже не лучше, чем если бы ты просто щелкнул по ссылке, как обычно.

1

Предполагается, что Windows: установите Fiddler Web Debugging Proxy, включите его. Затем перейдите к начальному URL и просмотрите все перенаправления в левой панели Fiddler. На правой панели измените вкладки, чтобы отобразить "Заголовки запроса" и "Заголовки ответа". Я успешно использовал его именно для этой цели.

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

Но вы даже можете отправлять пользовательские запросы с пользовательскими заголовками в Fiddler. Для этого см. Вкладку "Построитель запросов".

0

(Между тем) есть несколько отличных онлайн-инструментов, помогающих отслеживать перенаправления.

И есть хорошее расширение для Google Chrome.

0

Это в значительной степени зависит от сайта.

Для этого вам нужно изучить каждый сайт в отдельности и иметь отдельный механизм (или код) для каждого сайта для возврата прямого URI.

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

0

Чтобы проверить, куда ссылка перенаправляет вас, вы можете использовать http://longurl.org/. Это особенно полезно для сокращенных URL-адресов. Это бесполезно для загрузки по сценарию и т.д.

0

Если вы используете Firefox, вы можете использовать дополнение под названием RequestPolicy которое, помимо прочего, будет приостанавливать работу и запрашивать разрешение, когда вы будете перенаправлены на другой домен. Это не сработает, если вы хотите найти редирект, который не идет в другой домен, но я уверен, что есть другой аддон Firefox для которого я не знаю =)

https://www.requestpolicy.com/

Обратите внимание, что это нарушит работу многих сайтов, которые используют CDN (сеть распространения контента), поскольку по умолчанию блокирует все междоменные образы, сценарии, CSS и перенаправления. Так что это не самый лучший выбор, если вы хотите всегда знать, где происходит перенаправление, если только вы не готовы проходить несколько дополнительных шагов при каждом посещении нового веб-сайта.

0

Я не совсем уверен, но если вы используете CUrl, вы можете не просто получить содержимое URL (get_file_contents (url) в PHP), а затем проверить тип MIME?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .