Domain hacks with unusual Unicode characters
shkspr.mobi
shkspr.mobi
> map characters to the "Simple_Lowercase_Mapping" property (the fourteenth column) in <http://www.unicode.org/Public/UNIDATA/UnicodeData.txt>, if any.
as if that were responsible for turning ℡ into TEL. But the fourteenth column in
> 2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
is empty!
What we're actually seeing is a Compatibility Decomposition, used when Unicode normalisation form NFKC is applied to the text.
Whether it's appropriate for browsers to be applying NFKC may be questionable. RFC 5895 calls for the use of NFC (which would not apply mappings like this), but it also says that
> These form a minimal set of mappings that an application should strongly consider doing. Of course, there are many others that might be done.
which leaves things rather open.
🇩🇪 is actually two Unicode code points 🇩 (U+1F1E9 'REGIONAL INDICATOR SYMBOL LETTER D') 🇪 (U+1F1EA 'REGIONAL INDICATOR SYMBOL LETTER E') that fonts display as a single flag grapheme. But google.🇩🇪 becomes the Punycode google.xn--h77hc and fails to resolve rather than mapping to ASCII as these other characters do.
For example, ℡ goes to TEL, but ℻ goes to punycode!
http://℻zero.com works for me.
Apparently just doesn't work as a TLD (chrome/linux).like http://3520653040 should take you to hn (atleast to the IP I'm resolving for hn right now)
Also, I know this is off topic, but that python example really bothered me.
original:
python -c 'import sys;print sys.argv[1].decode("utf-8").encode("idna")' "℡"
Should have been python -c 'print "℡".decode("utf-8").encode("idna")'
Or in python3 python -c 'print( "℡".encode("idna"))'More seriously, I just copied that codefrom somewhere. Why is the other way better?
Shorten? More readable? Simpler? Surely you said that in jest.
3520653040 = 209 * 256^3 + 216 * 256^2 + 230 * 256^1 + 240 * 256^0
The 209.216.230.240 representation is the sequence of octets (256 = 2^8) from MSB to LSB expressed as decimal values.
https://raymii.org/s/articles/IPv4_Address_Conversion_Tricks...
This "feature" is documented in the inet_aton(3) manpage.
An amusing approach is the one taken here:
https://www.namepros.com/threads/worlds-shortest-domain-name...
leading to the domain used for this URL shortener:
However, the ccTLD for São Tomé and Príncipe allows single-letter second-level domains, so perhaps this is a contender:
l.ſt
I can see the records and if i curl the ip-address for the dk-records I only get a nginx 301 redirect loop to the http-s version which serves a certificate for https://eksempel.dk.
Similar exprience with ai, curling the ip seems to point to a http://offshore.ai page.
Is the top level A-records used for some other protocol? Do they server any purpose?
edit: whoa, HN autoconverted it to Punycode. 🅂𝖍𝐤ₛᵖ𝒓.ⓜ𝕠𝒃𝓲/🆆🆃🅵/
Slack doesn't convert unicode urls, discord does for example.
DNS’ concern over backward compatibility is a bit of a pain sometimes. And now we even have two competing standards, where multicast DNS, mDNS, allows utf8, but “standard” DNS does not.
Over time, punycode is going to cause more phishing problems in non-ascii countries than it's going to solve, because users aren't going to see a difference between xn-blabla.de and xn-blablu.de if all domains are unreadable to them.
https://github.com/phishai/phish-protect is an attempt to do this, but I think there's a better middle ground for international users that doesn't simply block-by-default all punycode domains.
Should we perhaps instead be restricting the domain characters to the glyphs of ascii (rfc1035 compliant) and those glyphs that appear in their locale? Otherwise revert to punycode when the glyphs fall outside those ranges.
Allowing a user to enter a domain in their native language is very much worthwhile, I'd say, even if we revert to ascii for display.
It's almost possible to write a simple math paper using unicode instead of Latex
these characters can also be used to evade username restrictions and other spam filters when character substitution does not work.
you can even use these codes for bitcoin wallets