VKontakte に投稿されたリンクをクリックすると、他のソーシャル ネットワークと同様に、最初に「安全な」リンクへの移行があり、その後ソーシャル ネットワークがユーザーをさらに許可するかどうかを決定することがわかります。最も注意深い人は、ブラウザのアドレス バーに「vk.com/away.php」が 0.5 秒表示されることに気づきましたが、もちろん、それを重要視しませんでした。
背景
ある日、あるプログラマーは、別のプロジェクトを完了した後、自分がそのプロジェクトについてみんなに伝えたいという欲求に取り憑かれていることに気づきました。プロジェクトは、一意の IP を持つサーバーでホストされていましたが、ドメイン名はありませんでした。したがって、美しい第 3 レベルのサブドメインが .ddns.net ドメイン内にすぐに作成され、最終的にはリンクとして使用されました。
しばらくしてから投稿に戻ったプログラマは、サイトの代わりに VK スタブが開き、安全でないサイトへの移行を通知していることを発見しました。
賢明なユーザー自身が、どのサイトにアクセスすべきか、どのサイトにアクセスすべきでないかを決定する権利があるように思えますが、VKontakte の考え方は異なり、松葉杖なしでリンクをたどる機会は提供されていません。
どうしましたか
この実装には、いくつかの重大な欠点があります。
- 不審なサイトを開けない。 上で述べたように、ユーザーにはスタブを克服する方法はありません。リンクを開く唯一の方法は、リンクをコピーしてアドレス バーに貼り付けることです。
- リンクのナビゲーションが遅くなります。 リダイレクト速度は ping によって異なります。したがって、ping が高いと貴重な数秒が失われる可能性があり、これは周知のとおり、容認できません。
- 移行監視。 この方法により、ユーザーのアクションに関する情報を収集しやすくなります。もちろん、これは VK が使用するもので、遷移元の投稿の ID を安全なリンクに追加します。
ジャンゴを解放する
上記の問題すべてに対する最適な解決策は、ブラウザ拡張機能です。明らかな理由から、選択肢は Chrome にあります。ハブには優れたものがあります
このような拡張機能を作成するには、別のフォルダーに 2 つのファイル (json-Manifest と現在の URL アドレスを監視するための JavaScript ファイル) を作成する必要があります。
マニフェストファイルを作成する
主に必要なのは、拡張機能にタブを操作するためのアクセス許可を与え、実行可能スクリプトを割り当てることです。
{
"manifest_version": 2,
"name": "Run Away From vk.com/away",
"version": "1.0",
"background": {
"scripts": ["background.js"]
},
"permissions": ["tabs"],
"browser_action": {
"default_title": "Run Away From vk.com/away"
}
}
jsファイルを作成する
ここではすべてが簡単です。新しいタブの作成時に呼び出されるイベントで、URL アドレスが「」で始まるかどうかのチェックを追加します。
chrome.tabs.onCreated.addListener( function (tabId, changeInfo, tab) {
chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
var url = tabs[0].url;
if (url.substr(0,23) == "https://vk.com/away.php"){
var last = url.indexOf("&", 0)
if(last == -1)last = 1000;
var url = decodeURIComponent(url.substr(27, last-27));
chrome.tabs.update({url: url});
}
});
});
エクステンションの組み立て
両方のファイルが同じフォルダーにあることを確認したら、Chrome を開き、拡張機能タブを選択して、「解凍された拡張機能を読み込む」をクリックします。開いたウィンドウで、書き込まれた拡張ファイルのフォルダーを選択し、「収集」をクリックします。準備ができて!これで、vk.com/away などのすべてのリンクが元のリンクに置き換えられます。
代わりに、結論の
もちろん、この種のスタブは何百万もの詐欺サイトから多くの人を救ってきましたが、安全でないリンクをクリックするかどうかを決定する権利は人々自身にあると私は信じています。
便宜上、プロジェクトを次の場所に投稿しました
出所: habr.com