hashify.me不思议なオンラインサービスは、ドキュメント全体をURLに保存します.
1891 ワード
Hashifyは非常にユニークなオンラインサービスであり、その目標は問題を解決することではなく、疑問を提起しています.私たちがドキュメント全体をURLに保存すると、どのようなことが発生しますか?
原理
ドキュメント全体はURLに格納されています.HashifyはUnicodeをBase 64符号化によりASCII文字に変換します.
一般人の予想に反して、HTTP仕様はURLの長さを制限していません.これは、Hashifyが任意の長さのドキュメントを保存できることを意味します.
ブラウザには制限がありますか?大安心、主流ブラウザは80 k文字のURLをサポートします.例えば、Chromeは215 k文字のURLの時に応答を失うことができる.
しかし、サーバーや代理店などの制限はもっと厳しいかもしれません.
また、URLが長すぎて、コピー伝播が不便なため、Hashifyはbit.lyを使って短縮しています.しかしながら、bit.lyは、URL長に対して2048文字の制限がある.ほとんどの文書にとっても十分です.ドキュメントが長い場合は、Hashifyはコンテンツを切り分け(最大15つに切る)、Base 64をそれぞれのトランスコードしてbit.lyに送ります.そして、bit.lyを返した結果を組み合わせる.
つまり、22,500文字以下の文書は、bit.lyを記憶空間として使用することができます.これは本当に短いURLの生成サービスに対して絶妙な悪用です.
API
Hashifyのウェブサイトが知られているという前提で、hashify.meウェブサイトにアクセスしなくても文書の内容を取得できます.例えば、Pythonを使用します.
直接にいることができますhttp://hashify.me にはHashifyサービスを利用しています.もちろん、Hashifyはオープンソースです.自分のサーバーにも展開できます.
クローン倉庫:
http://hashify.me
Segment Faultを編纂する
原理
ドキュメント全体はURLに格納されています.HashifyはUnicodeをBase 64符号化によりASCII文字に変換します.
> unescape(encodeURIComponent('ça va?'))
"ça va?"
> btoa(unescape(encodeURIComponent('ça va?')))
"w6dhIHZhPw=="
URL長さ制限一般人の予想に反して、HTTP仕様はURLの長さを制限していません.これは、Hashifyが任意の長さのドキュメントを保存できることを意味します.
ブラウザには制限がありますか?大安心、主流ブラウザは80 k文字のURLをサポートします.例えば、Chromeは215 k文字のURLの時に応答を失うことができる.
しかし、サーバーや代理店などの制限はもっと厳しいかもしれません.
また、URLが長すぎて、コピー伝播が不便なため、Hashifyはbit.lyを使って短縮しています.しかしながら、bit.lyは、URL長に対して2048文字の制限がある.ほとんどの文書にとっても十分です.ドキュメントが長い場合は、Hashifyはコンテンツを切り分け(最大15つに切る)、Base 64をそれぞれのトランスコードしてbit.lyに送ります.そして、bit.lyを返した結果を組み合わせる.
http://hashify.me/unpack:gYi2Ie,g4fpte.
したがって、Hashifyは22,500文字以下の文書に短いURLを生成することができる.つまり、22,500文字以下の文書は、bit.lyを記憶空間として使用することができます.これは本当に短いURLの生成サービスに対して絶妙な悪用です.
API
Hashifyのウェブサイトが知られているという前提で、hashify.meウェブサイトにアクセスしなくても文書の内容を取得できます.例えば、Pythonを使用します.
from base64 import b64decode
from urlparse import urlparse
def unhashify(url):
return b64decode(urlparse(url).path[1:])
unhashify('http://hashify.me/w6dhIHZhPw==')
配置直接にいることができますhttp://hashify.me にはHashifyサービスを利用しています.もちろん、Hashifyはオープンソースです.自分のサーバーにも展開できます.
クローン倉庫:
git clone https://github.com/hashify/hashify.me
Comppassをインストール:gem update --system
gem install compass
インストール依存make setup
ビルドmake
inxサーバを使用すると設定ファイルを追加してアクティブにします.ln -s "$(pwd)/nginx.conf" /opt/local/etc/nginx/sites-available/hashify.me
ln -s ../sites-available/hashify.me /opt/local/etc/nginx/sites-enabled/hashify.me
sudo nginx -s reload
プロジェクトホームページhttp://hashify.me
Segment Faultを編纂する