ユーザーがウィキペディアをブロックしていると判断します



最近、Roskomnadzor は、ロシア連邦の領土からウィキペディアへのアクセスをブロックしようとしました 。 試みは失敗し、反撃に出る時が来ました。 カットの下の記事では、ユーザーXがサイトAにアクセスした場合、サイトAがユーザーに対して別のサイトBがブロックされているかどうかを判断できることを示します。 そして、 新興の伝統によれば、プレゼンテーションは質疑応答形式で行われます。



これは何のためですか?



ウィキペディアのブロックについて議論する際、コミュニティは検閲に非常に有益な2つの状況に気付きました。 最初に、ウィキペディアはHTTPSと、さらにHSTSを使用します。 これは、百科事典全体(ドメインに正確な)のみをブロックできることを意味しますが、ブロックに関するメッセージで悪名高いページにリダイレクトすることは不可能です。 代わりに、接続エラーメッセージが表示されます。 これはウィキペディアの内部問題のように見え、Roskomnadzorのアクションに対するユーザーの不満を軽減します。 同時に、法の支配の発展にはフィードバックが必要です。 第二に、たとえユーザーがロックについて知ったとしても、彼らの多くは単に何をすべきかを知らないでしょう。 パーマネントダイを吊るす「Wikipediaをブロックした場合-Torブラウザをダウンロードしてください!」 同時に、Wikipediaのブロックとそれを回避する方法についてユーザーに通知する必要があります。 提起された問題の解決策は、現在の記事を提供することです。



これは何ですか?



これは、Javascriptを使用して、クライアント側のほとんどすべての(以前に調査された)サイトの可用性を判断するためのかなり普遍的な方法です。



UPD:仲間のbakhirevhobotyiのアドバイスにより、作業メカニズムが変更されました。 面白いジオメトリで最も興味深い部分は不要であることが判明したため、定義はイベントで書き直されます。

デモが欲しい!



お願い!

同じ面白いジオメトリ-画像のクロスドメインイベントを禁止するときに印刷します


どのように機能しますか?



2つの画像を含む目に見えないHTMLコードのブロックが作成されます。1つのコントロール-明らかに存在しないURLから、2番目の信号-チェックされているサイトからの画像。 しばらくしてサイズが一致する場合、チェックされているサイトの画像がロードされなかったこと、つまり、静的にレンダリングできないほど「嘘」になっているか、ブロックされていることを意味します。



さらに詳細に?



imgタグによって挿入されたHTMLの画像は、デフォルトで画像ファイル自体によって定義されたサイズになります。 ダウンロードできなかった画像にもいくつかのサイズがあります。ブラウザによって異なります。 ここにあります(幅x高さ):
  • Firefox 37.0-24x24
  • Chrome 44.0.2403.155-0x0(ロード前)、20x20(ロードが失敗した場合)
  • Opera 12.16-114x22
要素プロパティ.offsetWidthおよび.offsetHeightを使用して、JavaScriptで要素サイズを取得できます。



そして、エラーの場合にサイズの信号画像がブラウザに表示されるものと一致する場合はどうなりますか?



幅と高さの両方が比較されることを考えると、これは非常にありそうにありません。 サイズが明らかに異なる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自体のサイトから画像を要求します。



国民経済におけるこれの使用はどこですか?






All Articles