goo.glも終わるしGoとGAEで短縮URLサービスをつくろう
goo.glは終わってしまうようなので、短縮URLサービスをみんな自分で作るといいと思います。QRコードも表示できるので、スマホにURLを送るときも簡単です。
ソースコード:juntaki/url-shortener
完成品:https://s.juntaki.com
前提
- GAE
- 短めのドメイン
つかいかた
reCAPTCHAを使うので、登録しておきましょう。Invisibleなやつを選んでおきます。
reCAPTCHA: Easy on Humans, Hard on Bots
ソースコードはここから入手してください。
juntaki/url-shortener
app.ymlを編集して、URLを自分のドメインに、SITE_KEYを先程取得したものに変更します。
env_variables:
BASE_URL: "https://s.juntaki.com"
RECAPTCHA_SITE_KEY: "6Lc48lAUAAAAAFehXaHNp0Ys-lS1iUfNtUXd_-eR"
secret.ymlのファイルを作ります。
env_variables:
RECAPTCHA_SECRET: "<your-recaptcha-secret>"
あとは適当なプロジェクトにデプロイしたら完成です。
gcloud config set project <project-name>
gcloud app deploy
技術的な解説
短いURLをつくる方法
適当なハッシュ関数で〜と考えていましたが、ぶつからなくても、長くなっては意味がないです。単純ですが、既存のURLとぶつからなくなるまで、下記の文字から3つランダムで選びます。
var letters = []rune("23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz")
文字は、Base58から数字の1と小文字のoの2文字を取り除いたBase56のセットになっています。発表スライドなどでパッと見せても見間違えにくいです。
56*56*56=17万通り近くあるので、そんなに枯渇することもないでしょう。
QRコードを作る
skip2/go-qrcode: QR Code encoder (Go)
これを使いました。Base64エンコードして、テンプレートに組み込んでしまえば、画像の配信を考えなくて良いので簡単です。
reCAPTCHAを使う
単に使ってみたかっただけですが、お手軽さとスパム対策を考えると、ちょうどよい選択肢でした。
button id='submit'
とあるサンプルをコピペして使うと、そのまま使えないシンプルな罠が仕掛けてあったり、このサンプルは本当に使わせる気があるのだろうか・・・
Developer's Guide | reCAPTCHA | Google Developers
jquery - javascript submit() is not a function? - Stack Overflow
まとめ
GAEなので維持費0円でURL短縮サービスがつくれました。いいかんじの背景画像などをつけると、独自感が出てよいのではないでしょうか。
リダイレクトするときに、ログを取っておくとアクセス解析みたいなことも簡単にできると思います。
Author And Source
この問題について(goo.glも終わるしGoとGAEで短縮URLサービスをつくろう), 我々は、より多くの情報をここで見つけました https://qiita.com/juntaki/items/4e8b8e77bbea66bbabd5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .