Як проаналізувати посилання, щоб з’ясувати фактичне посилання


13

Іноді під час завантаження чогось я знаходжу, що посилання не є прямими до файлів.

Наприклад, це посилання на завантаження PDF-файлу:

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

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

Як називаються такі та подібні прийоми не відображення прямих посилань? Деякі посилання, такі як Вікіпедія, ...?


1
Виправлено посилання. Клацніть, editщоб побачити джерело розмітки, як я це зробив.
Joel Coehoorn

Відповіді:


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 або навіть пропущено всі разом.


11

Це може бути неможливим. Сайти можуть подати вас через сто переадресацій, перш ніж потрапити до файлу.

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


Спасибі! Як називаються такі та подібні прийоми не відображення прямих посилань? Деякі посилання, такі як wikipedia, ...?
Тім

1
Просто перенаправлення. не знаю жодної іншої техніки. Дивіться тут
soandos

Коли посилання на файли і такі, як на відміну від звичайних сторінок, його зазвичай називають антипіяком .
Synetech

7

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


1
Це вірно. Невелике доповнення: коли клієнт отримує доступ до такого неясного посилання, і сервер хоче сказати клієнту, що це насправді pdf-файл, і його слід зберегти як pdf-файл - сервер повідомляє це клієнтові через HTTP-контент типу заголовок.
vtest

3

Це в значній мірі "справжня" URL-адреса, як і для цих добре захищених веб-сайтів, ви повинні подати повну URL-адресу для сервера, щоб підтвердити ваш запит. Ви можете бути перенаправлені на іншу URL-адресу згодом, але це, як правило, одноразова. Іншими словами, ці веб-сайти, що завантажують файли, ніколи не дадуть вам прямого посилання за допомогою п'явок.

У цій конкретній URL-адресі параметри, захищені цифровим підписом, чітко відображають обмеження часу та IP-адреси завантажувача. Для веб-сайту з таким рівнем компетенції навряд чи будуть просочені прямі посилання.


3

Ці посилання на переадресацію також часто асоціюються зі станом сеансу. Вони виконають перевірку приватних даних на основі входу в сеанс, перш ніж надати вам посилання - немає доступу до ресурсу = немає доступу до ресурсу. Він може використовуватися для забезпечення доступу до файлів / ресурсів, що знаходяться поза коренем веб-сторінки, і передається назад запитувачем через додаток, а не доступний через пряму URL-адресу. Але лише в тому випадку, якщо ваші приватні особи це дозволяють.

Приклад обох тут. Він перенаправить вас до іншої URL-адреси на основі рядка 'mkoenig', який додає додаткові URL-адреси. Повторне пряме здійснення здійснюється в кодування на стороні сервера, якого ви не могли (або принаймні не повинні) бачити. Якщо потім перейти до "Веб-файлів", перелічені файли - це лише ті файли, які викладач оприлюднив. У неї можуть бути інші файли, до яких ви не можете потрапити, і які не будуть в списку. Це також обробляється на стороні сервера кодування стосовно того, що воно буде / не повернеться.

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

Грег


2

Як і вище, неможливо. Рекомендую ви запустити VM або схопити копію Sandboxie, щоб містити ваш браузер для таких посилань.

Редагувати

Не знаючи, яку операційну систему ви використовуєте, я дам тут загальну відповідь.

VM короткий для віртуальної машини. Це в основному програмне забезпечення, створене комп'ютером, що працює всередині комп'ютера. Віртуальна машина матиме власну операційну систему та браузер. Хоча він все ще використовує Інтернет і жорсткий диск вашого комп'ютера, це окрема машина з точки зору ОС. Тож це робить його зручним, як подряпина паперу. Все, що відбувається всередині VM, не впливає на вашу реальну машину.

Virtualbox - це програмне забезпечення, яке я рекомендую отримати для VM, якщо ви не використовуєте Windows, тоді я рекомендую Virtual PC.

Sandboxie на зразок VM, але він просто ізолює конкретні програми. Ви можете сказати йому запустити копію свого веб-переглядача, і всі файли чи дії, які виконує браузер, перенаправляються до тимчасової папки. Тож якщо він намагається завантажити вірус, він перенаправляється у тимчасову папку, яка знаходиться в карантині з решти вашої машини. Це не так надійно, як VM, але він використовує менше процесора / пам'яті і швидший і зручніший.

Я б спробував спочатку Sandboxie. Це менша крива навчання.


1
Спасибі! Що ви маєте на увазі під "запустити віртуальний комп'ютер або схопити копію Sandboxie, щоб містити ваш браузер для таких посилань"? Деякі посилання, які пояснюють, як зробити дві речі?
Тім

Вибачте, я розширю відповідь.
surfasb

Спасибі! Моя ОС - Ubuntu. Але я не розумію, як за допомогою VM можна визначити прямі посилання?
Тім

1
Він насправді не визначає посилання для вас. Але це створює безпечне середовище, яке допоможе вам визначити посилання. Ви не можете ідентифікувати переадресації, не склавши сторінку.
surfasb

1
Я не думаю, що його питання стосується безпеки. Він просто шукає спосіб отримати пряме посилання на файл.
магнатський

2

Це ніколи не можливо , щоб з'ясувати фактичну посилання.

Сервер обробляє запити до файлів, використовуючи деякі WWW Rewrite (наприклад, для серверів 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.

на закінчення: ви ніколи не можете знати, як налаштовано сервер та сценарії, тож ви ніколи не зможете дізнатися справжню, фактичну адресу, навіть якщо це здається вам відомим.


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 , увімкніть його. Потім перейдіть до своєї початкової URL-адреси та перегляньте всі переспрямування на лівій панелі Fiddler. На правій панелі змініть вкладки, щоб відобразити "Запити заголовків" та "Заголовки відповідей". Я успішно використовував його саме для цієї мети.

З іншого боку, лише "кінцева" URL-адреса може не працювати однаково, якщо ви перейдете до неї безпосередньо, оскільки запит може не мати правильного реферату або пропустити деякі інші обмеження.

Але ви навіть можете надсилати власні запити за допомогою спеціальних заголовків у Fiddler. Дивіться вкладку "Запит конструктора" для цього.


0

Це багато в чому залежить від сайту.

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

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


0

Щоб перевірити, куди посилання переспрямовує вас, ви можете скористатися http://longurl.org/ . Це особливо корисно для скорочених URL-адрес. Він не корисний для сценаріїв завантажень тощо.


0

Якщо ви використовуєте Firefox, ви можете використовувати додаток, RequestPolicyякий називається , крім іншого, зробить паузу і попросить вас дозволу, коли ви будете перенаправлені на інший домен. Це не спрацює, якщо ви хочете знайти переспрямування, яке не переходить на інший домен, але я впевнений, що для іншого, для якого я не знаю =, є інший Firefox Addon.

https://www.requestpolicy.com/

Зауважте, що він порушить багато сайтів, які використовують CDN (Network Distribution Network), оскільки за замовчуванням він блокує всі міждоменні зображення, сценарії, css та переадресації. Тож це не найвищий вибір, якщо ви хочете завжди знати, куди йде переадресація, якщо ви не готові пройти кілька додаткових кроків кожного разу, коли відвідуєте новий веб-сайт.


0

Я не дуже впевнений, але якщо ви використовуєте CUrl, чи можете ви не просто отримати вміст URL-адреси (get_file_contents (url) у PHP), а потім перевірити тип MIME?


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.