Hacker News new | ask | show | jobs
by bdc 4843 days ago
What are you using to determine whether *.io domains are "free" vs "taken"? It seems to be incorrect.

  http://www.usernique.com/io/x
  -- "free"

  http://www.nic.io/cgi-bin/whois?query=x.io
  -- The domain is unavailable for use.
3 comments

Looks like there's some bugs here. Just claimed 'esi' was available on Twitter and GitHub, but it's not.
Hmm. Judging from the way the server.js is written, I'd expect he's being rate-limited, and the server returns free whenever the HTTP call doesn't return 200.

Edit: Just to be sure, I threw in a breakpoint on line 18 of generate.js, and set name to my username (cbhl) -- and got a false "free" result for both Twitter and GitHub.

The OP might need to be getting OAuth tokens and using the GitHub/Twitter APIs.

Any tips to sort this out? How are things being rate limited?

edit: just realised you meant that twitter/github etc are rate limiting my requests. Bummer.

Just hit the profile page URL and get the HTTP staus code. If https://twitter.com/ksdhbfslbflsdbs returns 404, it's not available.

Not quit the same (a username might be reserved internally), but either way, nobody else can use the name.

Yep, thats pretty much how it works at the moment (see https://github.com/trevorah/usernique/blob/master/server.js). The issue is that the server is sending out quite a few of these hits to twitter, and twitter is smart enough to start reject requests when things get a bit too much.
I'm not a node guy, but I found this module for Whois checks - https://npmjs.org/package/whois-available It uses the IANA Whois service, an admittedly cursory look doesn't turn up anything re: rate limits, but you could just do a get request on the root url and only check Whois if it 404s to be safe. http://www.iana.org/whois
If you can figure out how to do the request on the client side, that would mitigate the issue.

Otherwise, I'd say you're probably out of luck. (You could try doing the query over IPv6, but eventually they'll just block the entire subnet, so I don't know if it's worth the trouble.)

Here's another one: says "ece" is available. http://d.pr/i/fiRF
just checking the return code on a GET request. src is on github if you're curious. You're right though, looks like the domain lookups need a bit of work.
You should do a "whois" lookup for the domain. The return code for a 'get' request on the domain has no bearing on its availability -- many parked domains do not even have DNS configured, let alone HTTP.
I'd be wary of doing automated whois lookups, which might be considered abusive / against terms of service depending on which server you hit.
Good point. This doesnt sound like a quick fix.
Very true. This requires a little more work than my current hack. I'll see if there is a whois package for node...
The quickest way I've found is to do a DNS lookup, and if that fails, hit the WHOIS.