最近、Roskomnadzor は、ロシア連邦の領土からウィキペディアへのアクセスをブロックしようとしました 。 試みは失敗し、反撃に出る時が来ました。 カットの下の記事では、ユーザーXがサイトAにアクセスした場合、サイトAがユーザーに対して別のサイトBがブロックされているかどうかを判断できることを示します。 そして、 新興の伝統によれば、プレゼンテーションは質疑応答形式で行われます。
これは何のためですか?
ウィキペディアのブロックについて議論する際、コミュニティは検閲に非常に有益な2つの状況に気付きました。 最初に、ウィキペディアはHTTPSと、さらにHSTSを使用します。 これは、百科事典全体(ドメインに正確な)のみをブロックできることを意味しますが、ブロックに関するメッセージで悪名高いページにリダイレクトすることは不可能です。 代わりに、接続エラーメッセージが表示されます。 これはウィキペディアの内部問題のように見え、Roskomnadzorのアクションに対するユーザーの不満を軽減します。 同時に、法の支配の発展にはフィードバックが必要です。 第二に、たとえユーザーがロックについて知ったとしても、彼らの多くは単に何をすべきかを知らないでしょう。 パーマネントダイを吊るす「Wikipediaをブロックした場合-Torブラウザをダウンロードしてください!」 同時に、Wikipediaのブロックとそれを回避する方法についてユーザーに通知する必要があります。 提起された問題の解決策は、現在の記事を提供することです。
これは何ですか?
これは、Javascriptを使用して、クライアント側のほとんどすべての(以前に調査された)サイトの可用性を判断するためのかなり普遍的な方法です。
UPD:仲間のbakhirevとhobotyiのアドバイスにより、作業のメカニズムが変更されました。 面白いジオメトリで最も興味深い部分は不要であることが判明したため、定義はイベントで書き直されます。
デモが欲しい!
お願い!
同じ面白いジオメトリ-画像のクロスドメインイベントを禁止するときに印刷します
2つの画像を含む目に見えないHTMLコードのブロックが作成されます。1つのコントロール-明らかに存在しないURLから、2番目の信号-チェックされているサイトからの画像。 しばらくしてサイズが一致する場合、チェックされているサイトの画像がロードされなかったこと、つまり、静的にレンダリングできないほど「嘘」になっているか、ブロックされていることを意味します。
imgタグによって挿入されたHTMLの画像は、デフォルトで画像ファイル自体によって定義されたサイズになります。 ダウンロードできなかった画像にもいくつかのサイズがあります。ブラウザによって異なります。 ここにあります(幅x高さ):
幅と高さの両方が比較されることを考えると、これは非常にありそうにありません。 サイズが明らかに異なる2つの画像をリクエストし、受信したサイズを比較できます。 それらが一致する場合、ダウンロードは失敗しました。 それでも、ファビコンを唯一の画像としてプルすべきではありません。
どのように機能しますか?
2つの画像を含む目に見えないHTMLコードのブロックが作成されます。1つのコントロール-明らかに存在しないURLから、2番目の信号-チェックされているサイトからの画像。 しばらくしてサイズが一致する場合、チェックされているサイトの画像がロードされなかったこと、つまり、静的にレンダリングできないほど「嘘」になっているか、ブロックされていることを意味します。
さらに詳細に?
imgタグによって挿入されたHTMLの画像は、デフォルトで画像ファイル自体によって定義されたサイズになります。 ダウンロードできなかった画像にもいくつかのサイズがあります。ブラウザによって異なります。 ここにあります(幅x高さ):
- Firefox 37.0-24x24
- Chrome 44.0.2403.155-0x0(ロード前)、20x20(ロードが失敗した場合)
- Opera 12.16-114x22
そして、エラーの場合にサイズの信号画像がブラウザに表示されるものと一致する場合はどうなりますか?
幅と高さの両方が比較されることを考えると、これは非常にありそうにありません。 サイズが明らかに異なる2つの画像をリクエストし、受信したサイズを比較できます。 それらが一致する場合、ダウンロードは失敗しました。 それでも、ファビコンを唯一の画像としてプルすべきではありません。
そしてソース?
GPLv3の下のgithubで。
そして、それをすべて使用する方法は?
もちろん、コードを読みやすいものにしようとしましたが、もちろん、これによって例を挙げることができます。
chasAntidot.testSiteWithImg({ url: 'https://ru.wikipedia.org/static/images/project-logos/ruwiki.png', //URL - ifBlocked: function(){message('');}, //callback, ifNotBlocked: function(){message(' ');}, //callback, time: 3500, // , 4000 secondImage: 'https://ru.wikipedia.org/favicon.ico', //URL - });
jQueryなどの追加のライブラリは必要ありません。すべてが純粋なJSです。
さて、ウィキペディアのブロックの可能性についてユーザーに通知する準備ができました! 完成したコードを入手できますか?
まず、いずれにしても、ライブラリをWebサイトにダウンロードすることをお勧めします。 github.ioはロックの影響を受けません。 第二に、たとえば純粋なJSの場合、このオプションは可能です。
chasAntidot.createBanner( ', <a href="https://ru.wikipedia.org"></a> . <a href="http://rublacklist.net" target="_blank">, !</a>', { url: 'https://ru.wikipedia.org/static/images/project-logos/ruwiki.png', secondImage: 'https://ru.wikipedia.org/favicon.ico', } );
これはもちろん機能しますが、あまり美しくはありません:)さまざまなライブラリを使用してバナーを作成する機能を追加するパッチを歓迎します!
そして、ウィキペディアが本当に落ちたら?
この場合、同様のメカニズムを使用して、画像の可用性を直接およびアノニマイザーを介して比較できます。 この場合、リソースがブロックされていると見なすことができるのは、写真がアノニマイザーを介して直接表示されている場合に限られます。 確かに、アノニマイザーをブロックすることもできます。その場合は、アノニマイザーの可用性も確認する必要があります。たとえば、アノニマイザーを使用して、ILV自体のサイトから画像を要求します。
国民経済におけるこれの使用はどこですか?
- Wikipediaのモバイル版は、デスクトップのブロック(異なるアドレスおよび異なるドメインにある)についてユーザーに時間通りに警告することができ、逆も同様です。
- 同様の操作原理でページにスクリプトをインストールすることで、ウェブマスターはリンクをプロキシ経由で有限数のブロックされたリソースに即座に変更できます。 既製のソリューションはありませんが、パッチは受け入れられます。
- お気に入りのサイト(VKontakteなど)がブロックされているユーザーを正確に識別し(州の検閲や雇用者による)、VPN /プロキシの購入または広告付きの無料プロキシの使用を提供できます。
- クライアントでTOR / I2Pを使用することを決定
できないため、ドメイン.onion / .i2pから画像を要求します - ユーザーがIPv6をアクティブにしているかどうかを知りたいですか? 画像をIPv6アドレスにアップロードするだけです。 または、新しいプロトコルをサポートする大規模なユーザー(Googleなど)のサーバー上の写真を使用します。
- また、場合によっては、クライアントが使用するDNSを決定できます。 たとえば、OpenNICおよびその他のNameCoin / .bit
- ルーターのWebインターフェースにも写真があります! そのため、必要に応じて、外部からWebインターフェイスにアクセスできない場合でも、ルーターのモデルを決定することもできます。
- 最後に、特定のネットワークのメンバーシップを確認できます。 たとえば、一部のプロバイダーには、サブドメイン全体があり、サブスクライバーのみがアクセスできるサイトがあります。 本当に単一の写真はありませんか? また、企業ネットワークとの提携を確認することもできます-もちろん、内部からしか利用できないリソースを知っている場合を除きます。 たぶん、モスクワの地下鉄からWi-Fi経由でネットワークにアクセスするユーザーに特別な何かを見せたいですか? 広範囲のカフェネットワークから? その後、内部からのみ利用可能な写真の対応する承認ページを見る価値があります! IPの定義が時々より正当化されることは否定できませんが。
- クロム拡張URLを使用して、個別の画像ファイルを持つ拡張の存在を確認することはできません 。 私はいつも壊れた画像を取得します。
- ローカル画像へのアクセスをブロックしない古いブラウザー(IE6?)では、ユーザーがインストールしたアプリケーション(Libre Office、GIMP、MS Office、Adobe Photoshopなど)のバージョンを特定できる可能性があります-ただ知っているだけですどのバージョンのどの写真が各バージョンの特徴です。 もちろん、これはプログラムが既定のディレクトリにインストールされている場合にのみ機能しますが、たとえば、このような手法により、ユーザーにはないがサイトでの作業に必要なプログラムをインストールするための指示をサイトに表示できます。 最新のブラウザでは、ほとんどの場合機能しません。