URL – Shortener
   Florian Klien
     @flowolf
  @bcgraz - #bcg11
Was ist ein(e) URL?
  scheme://user:passwd@domain:port/path?query_string#anchor
   ftp http https      TLDs: .aero .asia .biz .cat .com .coop .edu .gov .info .int .jobs .mil .mobi .museum .name .net .org
                       .pro .tel .travel .ac .ad .ae .af .ag .ai .al .am .an .ao .aq .ar .as .at .au .aw .ax .az .ba .bb .bd .be .bf .bg
   mailto dns ssh      .bh .bi .bj .bm .bn .bo .br .bs .bt .bv .bw .by .bz .ca .cc .cd .cf .cg .ch .ci .ck .cl .cm .cn .co .cr .cu .cv .cx
   gopher imap tel     .cy .cz .de .dj .dk .dm .do .dz .ec .ee .eg .eh .er .es .et .eu .fi .fj .fk .fm .fo .fr .ga .gb .gd .ge .gf .gg .gh .gi .gl
                       .gm .gn .gp .gq .gr .gs .gt .gu .gw .gy .hk .hm .hn .hr .ht .hu .id .ie .il .im .in .io .iq .ir .is .it .je .jm .jo .jp
                       .ke .kg .kh .ki .km .kn .kp .kr .kw .ky .kz .la .lb .lc .li .lk .lr .ls .lt .lu .lv .ly .ma .mc .md .me .mg .mh
                       .mk .ml .mm .mn .mo .mp .mq .mr .ms .mt .mu .mv .mw .mx .my .mz .na .nc .ne .nf .ng .ni .nl .no
                       .np .nr .nu .nz .om .pa .pe .pf .pg .ph .pk .pl .pm .pn .pr .ps .pt .pw .py .qa .re .ro .rs .ru .rw .sa .sb .sc .sd
                       .se .sg .sh .si .sj .sk .sl .sm .sn .so (domain name)|.so .sr .st .su .sv .sy .sz .tc .td .tf .tg .th .tj .tk .tl .tm

                       .tn.to  .tp .tr .tt .tv .tw .tz .ua .ug .uk .us .uy .uz .va .vc .ve .vg .vi .vn .vu .wf .ws .ye .yt .za .zm .zw
                       ‫. .مصر‬рф ‫. .السعودية. امارات‬arpa

?f=q&z=18&source=s_q&hl=de&q=graz&sll=47.010957,15.472269&sspn=0.02022,0.040641&ie=

     foo://username:password@example.com:8042/over/there/index.dtb?type=animal;name=ferret#nose
      /    _______________/ _________/ __/             ___/ _/ _____________________/ __/
      |            |                 |      |                |    |            |               |
      |        userinfo           hostname port              |    |         query          fragment
      |     _______________________________/ _____________|____|/
   scheme                     |                              | | |
      |                   authority                          |path|
      |                                                      |    |
      |              path                       interpretable as filename
      |    ___________|____________                               |
     /  /                                                       |
     urn:example:animal:ferret:nose                 interpretable as extension

   http://tools.ietf.org/html/rfc3986#page-16
Wieso Lange URLs?
http://maps.google.at/maps?
f=q&source=s_q&hl=de&geocode=&q=graz&sll
=47.010957,15.472269&sspn=0.02022,0.0406
41&ie=UTF8&hq=&hnear=Graz,+Graz+(Stadt),
+Steiermark&ll=47.06577,15.442293&spn=0.0
02525,0.00508&z=18
Wieso kürzen?
●   Urls merkbar machen
●   übersichtlich gestalten (e-mails,...)
●   Twittern

●   Statistiken für Links sammeln
●   Editieren von URLs nach Posten eines Links
Dienste
Risiken & Probleme
●   Links werden 'versteckt' (Spam, Scam, Viren,...)

●   Ein Glied mehr in der Kette (DNS, Angriffe,
    Ausfälle,...)

●   Informationsgewinnung aus Benutzerprofilen

●   Endlos Verlinkungen (blogpost)
Funktionsweise
●   HTTP 301 Moved Permanently
    oder
●   Frames

●   Lookup der Kurz-URL (ID, Nummer, Nick)
●   Weiterleitung an die lange Adresse (durch
    Setzen der Adresse im Header)
qr.cx – Was soll der Dienst können?
●   Keine Eingabe mittels Textfeld
    nutzbar von der Seite aus die man kürzen möchte
●   Simpel
●   Kurze Links!
●   Ein Mehrwert/Kniff/Gimmick --> QR-Codes
●   API (seit 06/2009)
●   ablenken von der Bakk. Arbeit ;)
qr.cx - Anfänge

●   18. Mai 2009: Prototyping
●   1. Juni 09: qr.cx wird registriert
●   Basiert auf Apache, PHP und MySQL
    Weiterleitung mittels HTTP 301
●   12. Juni 09: API erblickt das Licht der Welt
HTTP-Header

$ curl -I http://qr.cx/1r8
HTTP/1.1 301 Moved Permanently
Date: Sun, 16 May 2010 14:12:07 GMT
Server: Apache
X-Powered-By: qr.cx shorty
Location: http://example.com
X-Greetz: Have a nice day :)
Content-Type: text/html
qr.cx - API
●   22. Juni 09: erste App inkludiert das API
    (shortenurl FireFox plugin)

●   August 09: TweetThis WordPress Plugin
API
●   Einheitliches Interface zu mehreren shortenern:
    http://tiny-url.info/api/v1/doc/qr.cx
●   Ruby library:
    https://github.com/hbrandl/qr.cx-ruby-library/
qr.cx - Die Praxis
     Shortener wird nicht nur von 'den Guten'
     verwendet
●    Spammer &
     Illegale Links




    meldestelle@interpol.at zur Meldung von Kinderporno
HTTP-Header

$ curl -I http://qr.cx/e3m
HTTP/1.1 301 Moved Permanently
Date: Sun, 16 May 2010 14:12:07 GMT
Server: Apache
X-Powered-By: qr.cx shorty
Location: http://qr.cx/deleted.php
X-Greetz: Have a nice day :)
Content-Type: text/html
301 Works.org

betrieben von archive.org

http://301works.org

http://www.archive.org/details/301qrx
Finanzierung
Werbung?

beim Weiterleiten? - Nein

Wer will Werbung auf unserer Deleted-Seite kaufen?

 Spammer stecken viel Geld in Botnetze um bei uns
Links zu kürzen, die wir dann löschen ;)
Was wird kommen?
●   Detailiertere Statistiken

●   Besseres 'User Interface'

●   Magnet Links
Fragen?

●   @flowolf
●   f@qr.cx
●   www.flo.cx
●   blog.flo.cx
●   ad@qr.cx
●   abuse@qr.cx

Url shortener - good, bad, ugly

  • 1.
    URL – Shortener Florian Klien @flowolf @bcgraz - #bcg11
  • 2.
    Was ist ein(e)URL? scheme://user:passwd@domain:port/path?query_string#anchor ftp http https TLDs: .aero .asia .biz .cat .com .coop .edu .gov .info .int .jobs .mil .mobi .museum .name .net .org .pro .tel .travel .ac .ad .ae .af .ag .ai .al .am .an .ao .aq .ar .as .at .au .aw .ax .az .ba .bb .bd .be .bf .bg mailto dns ssh .bh .bi .bj .bm .bn .bo .br .bs .bt .bv .bw .by .bz .ca .cc .cd .cf .cg .ch .ci .ck .cl .cm .cn .co .cr .cu .cv .cx gopher imap tel .cy .cz .de .dj .dk .dm .do .dz .ec .ee .eg .eh .er .es .et .eu .fi .fj .fk .fm .fo .fr .ga .gb .gd .ge .gf .gg .gh .gi .gl .gm .gn .gp .gq .gr .gs .gt .gu .gw .gy .hk .hm .hn .hr .ht .hu .id .ie .il .im .in .io .iq .ir .is .it .je .jm .jo .jp .ke .kg .kh .ki .km .kn .kp .kr .kw .ky .kz .la .lb .lc .li .lk .lr .ls .lt .lu .lv .ly .ma .mc .md .me .mg .mh .mk .ml .mm .mn .mo .mp .mq .mr .ms .mt .mu .mv .mw .mx .my .mz .na .nc .ne .nf .ng .ni .nl .no .np .nr .nu .nz .om .pa .pe .pf .pg .ph .pk .pl .pm .pn .pr .ps .pt .pw .py .qa .re .ro .rs .ru .rw .sa .sb .sc .sd .se .sg .sh .si .sj .sk .sl .sm .sn .so (domain name)|.so .sr .st .su .sv .sy .sz .tc .td .tf .tg .th .tj .tk .tl .tm .tn.to .tp .tr .tt .tv .tw .tz .ua .ug .uk .us .uy .uz .va .vc .ve .vg .vi .vn .vu .wf .ws .ye .yt .za .zm .zw ‫. .مصر‬рф ‫. .السعودية. امارات‬arpa ?f=q&z=18&source=s_q&hl=de&q=graz&sll=47.010957,15.472269&sspn=0.02022,0.040641&ie= foo://username:password@example.com:8042/over/there/index.dtb?type=animal;name=ferret#nose / _______________/ _________/ __/ ___/ _/ _____________________/ __/ | | | | | | | | | userinfo hostname port | | query fragment | _______________________________/ _____________|____|/ scheme | | | | | authority |path| | | | | path interpretable as filename | ___________|____________ | / / | urn:example:animal:ferret:nose interpretable as extension http://tools.ietf.org/html/rfc3986#page-16
  • 3.
  • 4.
    Wieso kürzen? ● Urls merkbar machen ● übersichtlich gestalten (e-mails,...) ● Twittern ● Statistiken für Links sammeln ● Editieren von URLs nach Posten eines Links
  • 5.
  • 6.
    Risiken & Probleme ● Links werden 'versteckt' (Spam, Scam, Viren,...) ● Ein Glied mehr in der Kette (DNS, Angriffe, Ausfälle,...) ● Informationsgewinnung aus Benutzerprofilen ● Endlos Verlinkungen (blogpost)
  • 7.
    Funktionsweise ● HTTP 301 Moved Permanently oder ● Frames ● Lookup der Kurz-URL (ID, Nummer, Nick) ● Weiterleitung an die lange Adresse (durch Setzen der Adresse im Header)
  • 8.
    qr.cx – Wassoll der Dienst können? ● Keine Eingabe mittels Textfeld nutzbar von der Seite aus die man kürzen möchte ● Simpel ● Kurze Links! ● Ein Mehrwert/Kniff/Gimmick --> QR-Codes ● API (seit 06/2009) ● ablenken von der Bakk. Arbeit ;)
  • 9.
    qr.cx - Anfänge ● 18. Mai 2009: Prototyping ● 1. Juni 09: qr.cx wird registriert ● Basiert auf Apache, PHP und MySQL Weiterleitung mittels HTTP 301 ● 12. Juni 09: API erblickt das Licht der Welt
  • 10.
    HTTP-Header $ curl -Ihttp://qr.cx/1r8 HTTP/1.1 301 Moved Permanently Date: Sun, 16 May 2010 14:12:07 GMT Server: Apache X-Powered-By: qr.cx shorty Location: http://example.com X-Greetz: Have a nice day :) Content-Type: text/html
  • 11.
    qr.cx - API ● 22. Juni 09: erste App inkludiert das API (shortenurl FireFox plugin) ● August 09: TweetThis WordPress Plugin
  • 12.
    API ● Einheitliches Interface zu mehreren shortenern: http://tiny-url.info/api/v1/doc/qr.cx ● Ruby library: https://github.com/hbrandl/qr.cx-ruby-library/
  • 13.
    qr.cx - DiePraxis Shortener wird nicht nur von 'den Guten' verwendet ● Spammer & Illegale Links meldestelle@interpol.at zur Meldung von Kinderporno
  • 14.
    HTTP-Header $ curl -Ihttp://qr.cx/e3m HTTP/1.1 301 Moved Permanently Date: Sun, 16 May 2010 14:12:07 GMT Server: Apache X-Powered-By: qr.cx shorty Location: http://qr.cx/deleted.php X-Greetz: Have a nice day :) Content-Type: text/html
  • 15.
    301 Works.org betrieben vonarchive.org http://301works.org http://www.archive.org/details/301qrx
  • 16.
    Finanzierung Werbung? beim Weiterleiten? -Nein Wer will Werbung auf unserer Deleted-Seite kaufen? Spammer stecken viel Geld in Botnetze um bei uns Links zu kürzen, die wir dann löschen ;)
  • 17.
    Was wird kommen? ● Detailiertere Statistiken ● Besseres 'User Interface' ● Magnet Links
  • 18.
    Fragen? ● @flowolf ● f@qr.cx ● www.flo.cx ● blog.flo.cx ● ad@qr.cx ● abuse@qr.cx