実際のリンクを把握するためにリンクを分析する方法


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

はい、 時々

よくあることが2つあります。あなたのリンクはもううまくいかないので、この場合の実際のシナリオはわかりませんので、別のリンクにまとめます。

HTTPリダイレクト

これはあなたが見るものです Bit.ly その他のサービスその後、HTTPリダイレクト応答を送信します。あなたが訪れたとき http://bit.ly/oH3410 実際のURLにリダイレクトします。あるURLが別のURLにリダイレクトすることがあります。あなたがURLをにプラグインするならば、あなたはこれが起こっているのを見ることができます http://web-sniffer.net/ またはを使って [curl][1] -I http://bit.ly/oH3410 新しい場所を指す301が返されます。

そのため、HTTPリダイレクトを処理するには、300年代以内に応答が得られなくなるまでHTTP HEAD要求をループする必要があります(できれば200が返される)。覚えておいて欲しいのは、それらがループの中でリダイレクトされ、それが終わらないということです。あなたはCURLかどんなHTTPツールでもこれをすることができます。

ダウンロードページ

これはほとんどのダウンロードサイトが使用しているものです。ダウンロードリンクをクリックすると、たくさんの広告が掲載されたページが表示され、「ダウンロードが間もなく開始されます」というメッセージが表示されます。 [ ]。これらを使用すると、URLから実際の直接リンクを解析しようとすることができますが、それはサイト固有のものであり、迂回を防ぐためにほとんどのサイトには含まれません。これは meta http-equiv="refresh" ヘッダ内のタグ、またはJavaScript(最も一般的)。ただし、JSには通常ヘッダーフォールバックがあります。

しかし解決策はあります。ダウンロードページのソースを見ると、通常は <meta http-equiv="refresh"> タグ(通常は <noscript> tag)の属性を持つ URL それは実際のダウンロードを指しています。そのため、CURL(または他のHTTPツール)を使用してページをダウンロードし、解析してその値を取得します。とはいえ、サイトがこれを除外するのは、彼らが本当に厄介になりたいのであれば、ファイルをダウンロードするにはJavaScriptが必要です。

ダウンロードにリンクしているJavaScriptブロックがおそらくあるでしょう。難読化されているか、別のURLからリンクされている可能性があります。あなたの走行距離はそれを解析しようとすることによって変わるかもしれません。ページ上に「直接リンク」もあるかもしれません。あなたはそれを見つけるためにいくつかのテクニックを試すことができましたが、やはりそれはJavaScriptによって難読化されるか、あるいは全部一緒に見逃すことさえ可能です。


11

それは不可能かもしれません。あなたがファイルにたどり着く前に、サイトは百のリダイレクトを通してあなたをフィードすることができます。

さらに、javascriptを使ってサーバーに与えられたURLに基​​づいてリンクを張ることができます。


ありがとうございます。直接リンクを表示しない、そのような類似の技法の名前は何ですか?ウィキペディアなどの参考文献、...?
Tim

1
ただリダイレクトします。他の技術を知らないでください。 こちらをご覧ください
soandos

リンクがファイルへのもので、通常のページとは対照的に、 反ヒル
Synetech

7

サイトはスクリプト化されている可能性があり、特定のコマンドを受け取ると(URLがコマンドを渡すことができます)、リダイレクトせずにPDFファイル(または他のファイル)を返す可能性があります。それはサーバー側のものであり、サイトがどのようにコーディングされているかに依存します。実際にサーバーにそのリンクを要求せずに、ファイルを取得する方法を見つけ出すことはできそうもありません。直接URLを知っていても、直接リンクにアクセスする権限がない場合があります。一部のサイトは直接リンクが機能しないようにコード化されています。


1
これは正しいです。ちょっとした追加:クライアントがそのようなあいまいなリンクにアクセスしていて、サーバーがこれを実際にはpdfファイルでありpdfファイルとして保存する必要があることをサーバーに伝えたい場合 - サーバーはContent-Type HTTPを介してそれをクライアントに伝えますヘッダ。
vtest

3

これはほとんど「真の」URLです。これらのよく保護されたWebサイトの場合は、リクエストを認証するためにサーバーの完全なURLを送信する必要があります。後で別のURLにアクセスする可能性がありますが、通常はワンタイムURLになります。言い換えれば、これらのファイルダウンロードWebサイトはあなたにリーチ可能な直接リンクを与えることは決してないでしょう。

この特定のURLでは、デジタル署名によって保護されているパラメータに、ダウンローダの時間制限とIP制限が明確に記載されています。このレベルの能力を持つWebサイトでは、直接リンクが漏れる可能性は低いです。


3

これらのリダイレクトリンクは、多くの場合、セッション状態にも関連付けられています。彼らはあなたのリンクを提供する前にあなたのセッションログインに基づいていくつかのprivsチェックをするでしょう - リソースへのアクセスなし=リソースへのリンクアクセスなし。 直接URL経由ではなく、Webルートの外部にあるファイルやリソースにアクセスし、アプリによってリクエスタにストリームバックするために使用できます。 あなたの外見がそれを可能にする場合に限ります。

両方の例は ここに。 追加のURLパラメータを追加する 'mkoenig'文字列に基づいて、別のURLにリダイレクトされます。リダイレクトはサーバーサイドのコーディングで行われますが、これはあなたが見ることはできないでしょう(少なくとも見るべきではありません)。 その後、「Webファイル」に移動した場合、リストされているファイルは、教師が公開したファイルのみです。彼女はあなたがたどり着けない他のファイルをそこに持っているかもしれません、そしてそれはリストされません。それは、返されるものと返されないものに関して、サーバー側のコーディングでも処理されます。

サーバーをハッキングしたり、サーバーサイドのソースコードにアクセスしたりすることなく、実際のリンクを取得できるとは思わない。また、たとえできるとしても、セッション特権がサーバーにアクセスを許可するよう指示しない限り役に立ちません。

グレッグ


2

上記のように、それは不可能です。そのようなリンクのためにあなたのブラウザを含むためにVMを起動するかSandboxieのコピーをつかむことをお勧めします。

編集する

使用しているオペレーティングシステムがわからない場合は、ここで一般的な回答をします。

VMは仮想マシンの略です。それは基本的にあなたのコンピュータの中で走るソフトウェアで作られたコンピュータです。仮想マシンには独自のオペレーティングシステムとブラウザがあります。それはまだあなたのマシンのインターネットとharddiveを使っていますが、それはOSの観点からは別のマシンです。それでそれはそれをスクラッチ紙片のようにそれを便利にします。 VMの内部で起こることはあなたの実際のマシンには影響しません。

バーチャルボックス Windowsを使用しているのでなければ、VM用に入手することをお勧めするソフトウェアです。その後、Virtual PCをお勧めします。

サンドボックス VMのようなものですが、特定のアプリケーションを分離するだけです。あなたはそれをあなたのブラウザのコピーを実行するように言うことができますそしてブラウザがするどんなファイルまたは行動も本質的に一時的なフォルダにリダイレクトされます。そのため、ウイルスをダウンロードしようとすると、あなたのマシンの他の部分から隔離されている一時フォルダにリダイレクトされます。 VMほど堅牢ではありませんが、使用するCPU /メモリが少なく、高速で便利です。

私は最初にSandboxieを試すでしょう。それはより小さな学習曲線です。


1
ありがとうございます。 「VMを起動するか、Sandboxieのコピーを入手してブラウザにこのようなリンクを含める」とはどういう意味ですか? 2つのことを行う方法を説明するための参考文献がありますか。
Tim

すみません、私は答えを広げます。
surfasb

ありがとうございます。私のOSはUbuntuです。しかし、VMを使用して直接リンクを特定する方法がわかりません。
Tim

1
それはあなたのためのリンクを実際に識別しません。しかし、それはあなたがリンクを識別するのを助けるだろう安全な環境を作り出します。ページをコンパイルしないとリダイレクトを識別できません。
surfasb

1
彼の質問は安全保障に関するものではないと思います。彼はファイルへの直接リンクを取得する方法を探しています。
magnattic

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ファイルです。

結論として:あなたはサーバーとその方法を知ることはできません。スクリプトが設定されているので、たとえそれがあなたが知っているように見えても、あなたは本当の、実際の住所を決して知ることができません。


1

Webサーバーにリクエストを送信すると(リンクをクリックすると)、サーバーはさまざまな応答を送信できます。一般的な例は、404(ページが見つかりません)、403(禁止)、または500(サーバーエラー)です。おそらく最も一般的なレスポンスコードは200(Ok)ですが、一般的には表示したいページが付随しているため、このコードは表示されません。

301と302というコードがあります。コード301と302は、リダイレクトコードであり、希望する応答が別の場所に移動したことをブラウザに知らせます。それらの間の主な違いはブラウザが物事をキャッシュする方法です。 301コードは「恒久的に移動した」ことを意味し、次回元のリンクにアクセスしようとしたときに、ブラウザはページが移動したことを覚えていて新しい場所に直接移動することがあります。 302は「他の場所で見つかりました」を意味し、ブラウザで一時的にのみ使用されるリンクを提供します。

リンクをチェックするプログラムを書くことは可能であるべきです、そして、あなたがそれが最終的に200を得るまで、あなたが30倍の応答を得続ける限り、それはあなたにリンクを見せるべきです。

残念ながら、それはそれよりも複雑です。 HTMLページは、ページのheadセクションにあるメタタグを使用して、次のような新しい場所にリダイレクトすることもできます。 <meta http-equiv="refresh" content="0;url=NEW PAGE URL" />。そのため、そのようなプログラムは、最後のリダイレクトに到達するように、HTMLを完全に解析する必要があります。

さらに、javascriptを使用してページからさらにリダイレクトされ、javascriptが難読化される可能性があります。だから今私たちの仮説プログラムもJavaScriptを理解する必要があります。この時点で私たちは完全に機能的なWebブラウザを手に入れました。実際にページを画面にレンダリングするための細部の細かい部分は見逃していますが、私たちのプログラムには、完全なWebブラウザに必要なその他すべてのものが含まれています。そもそも普通にリンクをクリックしただけの場合よりも、もう恩恵はありません。


1

Windowsの場合:インストール Fiddler Webデバッグプロキシ 有効にします。次に、開始URLに移動して、Fiddlerの左ペインにあるすべてのリダイレクトを確認します。右側のペインで、タブを変更して「要求ヘッダー」と「応答ヘッダー」を表示します。私はそれをまさにその目的のためにうまく使用しました。

一方、「最終的な」URLだけでは、直接参照しても同じように機能しない可能性があります。これは、要求に正しい参照元がない場合やその他の制限がない場合があるためです。

しかし、Fiddlerのカスタムヘッダを使ってカスタムリクエストを送信することもできます。それについてはタブ "Request Builder"を見てください。


0

これは主にサイトに依存します。

これを行うには、各サイトを個別に調査し、各サイトが直接URIを返すための個別のメカニズム(またはコード)を用意する必要があります。

また、同様の機能を提供するオープンソースのブラウザアドオンを調べることもできます。


0

リンクがあなたをあなたにリダイレクトしている場所をチェックするために使用することができます http://longurl.org/ 。短縮されたURLには特に便利です。スクリプトダウンロードなどには役に立ちません。


0

Firefoxを使用している場合は、というアドオンを使用できます。 RequestPolicy 他のドメインにリダイレクトされるたびに、一時停止して許可を求めます。別のドメインに移動しないリダイレクトを見つけたいのであればうまくいきませんが、そのために別のFirefoxアドオンがあると確信しています=)

https://www.requestpolicy.com/

デフォルトではブロックされるため、CDN(Content Distribution Network)を使用する多くのサイトが破壊されることに注意してください。 すべて クロスドメインイメージ、スクリプト、CSS、およびリダイレクト。新しいWebサイトにアクセスするたびにいくつかの手順を踏まなければならない場合を除き、リダイレクトの方向を常に知りたい場合は、これは最も簡単な選択ではありません。


0

よくわかりませんが、CUrlを使用している場合、URLの内容(PHPではget_file_contents(url))を取得してからMIMEタイプを確認することはできませんか?


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.