時々何かをダウンロードするとき、私はリンクがファイルへの直接のリンクではないことがわかります。
例えば、 この PDFファイルをダウンロードするためのリンクです。
ファイルへの実際のリンク(例:http://*.PDF)を把握/ハックアウトする方法を疑問に思いましたか?
直接リンクを表示しない、そのような類似の技法の名前は何ですか?ウィキペディアなどのいくつかの参照、...?
時々何かをダウンロードするとき、私はリンクがファイルへの直接のリンクではないことがわかります。
例えば、 この PDFファイルをダウンロードするためのリンクです。
ファイルへの実際のリンク(例:http://*.PDF)を把握/ハックアウトする方法を疑問に思いましたか?
直接リンクを表示しない、そのような類似の技法の名前は何ですか?ウィキペディアなどのいくつかの参照、...?
回答:
はい、 時々 。
よくあることが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によって難読化されるか、あるいは全部一緒に見逃すことさえ可能です。
サイトはスクリプト化されている可能性があり、特定のコマンドを受け取ると(URLがコマンドを渡すことができます)、リダイレクトせずにPDFファイル(または他のファイル)を返す可能性があります。それはサーバー側のものであり、サイトがどのようにコーディングされているかに依存します。実際にサーバーにそのリンクを要求せずに、ファイルを取得する方法を見つけ出すことはできそうもありません。直接URLを知っていても、直接リンクにアクセスする権限がない場合があります。一部のサイトは直接リンクが機能しないようにコード化されています。
これらのリダイレクトリンクは、多くの場合、セッション状態にも関連付けられています。彼らはあなたのリンクを提供する前にあなたのセッションログインに基づいていくつかのprivsチェックをするでしょう - リソースへのアクセスなし=リソースへのリンクアクセスなし。 直接URL経由ではなく、Webルートの外部にあるファイルやリソースにアクセスし、アプリによってリクエスタにストリームバックするために使用できます。 あなたの外見がそれを可能にする場合に限ります。
両方の例は ここに。 追加のURLパラメータを追加する 'mkoenig'文字列に基づいて、別のURLにリダイレクトされます。リダイレクトはサーバーサイドのコーディングで行われますが、これはあなたが見ることはできないでしょう(少なくとも見るべきではありません)。 その後、「Webファイル」に移動した場合、リストされているファイルは、教師が公開したファイルのみです。彼女はあなたがたどり着けない他のファイルをそこに持っているかもしれません、そしてそれはリストされません。それは、返されるものと返されないものに関して、サーバー側のコーディングでも処理されます。
サーバーをハッキングしたり、サーバーサイドのソースコードにアクセスしたりすることなく、実際のリンクを取得できるとは思わない。また、たとえできるとしても、セッション特権がサーバーにアクセスを許可するよう指示しない限り役に立ちません。
グレッグ
上記のように、それは不可能です。そのようなリンクのためにあなたのブラウザを含むためにVMを起動するかSandboxieのコピーをつかむことをお勧めします。
編集する
使用しているオペレーティングシステムがわからない場合は、ここで一般的な回答をします。
VMは仮想マシンの略です。それは基本的にあなたのコンピュータの中で走るソフトウェアで作られたコンピュータです。仮想マシンには独自のオペレーティングシステムとブラウザがあります。それはまだあなたのマシンのインターネットとharddiveを使っていますが、それはOSの観点からは別のマシンです。それでそれはそれをスクラッチ紙片のようにそれを便利にします。 VMの内部で起こることはあなたの実際のマシンには影響しません。
バーチャルボックス Windowsを使用しているのでなければ、VM用に入手することをお勧めするソフトウェアです。その後、Virtual PCをお勧めします。
サンドボックス VMのようなものですが、特定のアプリケーションを分離するだけです。あなたはそれをあなたのブラウザのコピーを実行するように言うことができますそしてブラウザがするどんなファイルまたは行動も本質的に一時的なフォルダにリダイレクトされます。そのため、ウイルスをダウンロードしようとすると、あなたのマシンの他の部分から隔離されている一時フォルダにリダイレクトされます。 VMほど堅牢ではありませんが、使用するCPU /メモリが少なく、高速で便利です。
私は最初にSandboxieを試すでしょう。それはより小さな学習曲線です。
それは 決して 実際のリンクを把握することは可能です。
サーバは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¶m2=jld8ijn, etc...
この場合、あなたがアクセスしているスクリプトは一つのヘッダ(pdfファイルのような)と共に送られるかもしれません、しかし実際にはそれはphpファイルです。
結論として:あなたはサーバーとその方法を知ることはできません。スクリプトが設定されているので、たとえそれがあなたが知っているように見えても、あなたは本当の、実際の住所を決して知ることができません。
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ブラウザに必要なその他すべてのものが含まれています。そもそも普通にリンクをクリックしただけの場合よりも、もう恩恵はありません。
Windowsの場合:インストール Fiddler Webデバッグプロキシ 有効にします。次に、開始URLに移動して、Fiddlerの左ペインにあるすべてのリダイレクトを確認します。右側のペインで、タブを変更して「要求ヘッダー」と「応答ヘッダー」を表示します。私はそれをまさにその目的のためにうまく使用しました。
一方、「最終的な」URLだけでは、直接参照しても同じように機能しない可能性があります。これは、要求に正しい参照元がない場合やその他の制限がない場合があるためです。
しかし、Fiddlerのカスタムヘッダを使ってカスタムリクエストを送信することもできます。それについてはタブ "Request Builder"を見てください。
リンクがあなたをあなたにリダイレクトしている場所をチェックするために使用することができます http://longurl.org/ 。短縮されたURLには特に便利です。スクリプトダウンロードなどには役に立ちません。
Firefoxを使用している場合は、というアドオンを使用できます。 RequestPolicy
他のドメインにリダイレクトされるたびに、一時停止して許可を求めます。別のドメインに移動しないリダイレクトを見つけたいのであればうまくいきませんが、そのために別のFirefoxアドオンがあると確信しています=)
https://www.requestpolicy.com/
デフォルトではブロックされるため、CDN(Content Distribution Network)を使用する多くのサイトが破壊されることに注意してください。 すべて クロスドメインイメージ、スクリプト、CSS、およびリダイレクト。新しいWebサイトにアクセスするたびにいくつかの手順を踏まなければならない場合を除き、リダイレクトの方向を常に知りたい場合は、これは最も簡単な選択ではありません。
(一方)リダイレクトの追跡を支援するための優れたオンラインツールがいくつかあります。
そして、Google Chromeには素晴らしい拡張機能があります。
edit
どのようにしてそれを行ったかについてのマークダウンのソースを見るために。