Page is a not externally linkable
incrediBILL - 3:25 am on Jan 23, 2013 (gmt 0)
Just tack your current server time onto the end of your UA string and nobody will ever be able to block you.
That depends on your blocking methodology.
I'd suspect their headers were flawed which would trap them regardless of the user agent. Did you collect those? Would be interesting to see.
if you have a good user agent filter, it should kick out any user agent that has all that extra stuff for evaluation.
Example, a prototype Firefox regex in PHP: /^Mozilla\/(?P<mozversion>(?P<mozmajor>\d{1,2})\.(?P<mozminor>\d{1,2})) \((?P<platform>X11|Maemo|Macintosh|Windows NT \d{1,2}\.\d{1,2}|Android);(?:.*)\) Gecko\/\d{1,10}(\.\d{1,2}){0,3} Firefox\/(?P<foxversion>\d{1,2}(\.\d{1,2}){0,3})$/
If it doesn't pass the simple regex check above, it falls into a routine that examines all the extraneous "stuff" to see if it's something known. If unknown, quarantined until it can be evaluated.
FWIW, the regex for Safari/Chrome/Firefox are almost all identical which makes MSIE the odd browser out in this process.
In case you're interested, the prototype MSIE regex I'm currently testing is: /^Mozilla\/(?P<mozversion>(?P<mozmajor>\d{1,2})\.(?P<mozminor>\d{1,2})) \(compatible; MSIE (?P<version>(?P<major>\d{1,2})\.(?P<minor>\d{1,2})); Windows (?P<windows>(XP|CE|95|98; Win 9x 4\.90|98|NT (?P<winversion>(?P<winmajor>\d{1,2})\.(?P<winminor>\d{1,2}))))(?:;|\))(?P<fragment1>.*?)(?:\)|$)(?P<fragment2>.*$)/
I do version validations outside of the regex because the regex just gets way too complicated if you attempt to put all the rules in there, or you end up with a big pile of regex's to cover all the variances. Having one regex that validates the format and extracts all the other information works best for me.