I've got a more limited and performant library I maintain. It frequently comes in first in speed comparisons.<p>It can only tell you things actually included in the UA string itself as it's just be a parser and not a "knowledge engine"<p><a href="https://github.com/donatj/PhpUserAgent">https://github.com/donatj/PhpUserAgent</a>
I have a bot I wrote to help me with various web tasks that are too tedious manually. I just tested it against this and it says "isbot: false".<p>edit: looks like it only detects bots that overtly identify themselves as bots, e.g. Googlebot -- it's designed to identify clients, not as some sort of security device
Many years ago (pre-smartphone), there was a Java library, written by an Italian chap, that did pretty much the same thing. Don’t remember the name. This appears to use the same approach. I think they had a PHP version, but that was a long time ago. I know it was several megabytes, which was <i>huge</i>, in those days.<p>Did what it said on the tin, but did so, by maintaining a huge list of individual devices and their characteristics. At the time, I chose not to use it (I was developing a <i>[c]</i>WAP server), but it had a number of supporters, and its maintainer was pretty sharp, and quite dedicated.<p>These days, there’s an order of magnitude more devices, and a much greater variety. Big job.
If you're looking for a Ruby implementation based on the same underlying user-agent parsing data, here you go: <a href="https://github.com/podigee/device_detector">https://github.com/podigee/device_detector</a>
I'm just curious — what could be a potential use case for such things on the backend? For bot detection, it seems quite unreliable. Would it be more suitable for server-side rendered UIs? Or am I missing something?
Good tool. I wish Google had gone even further with Chrome in reducing the information in the user agent. It seems like user agent is primarily used as a browser fingerprinting signal.
I need a way to detect the screen DPI from the user agent, so I can return higher resolution images only to devices that can use them. I realize detecting that based on user agent may not always be accurate, but surely it could work the vast majority of the time. Does anybody know of a lib that implements that on NodeJS?
i was need something similar for golang and i try to use regexes in those projects, but in eye of performance it wasnt good enough. sometimes i wish to understand more deeply regexes.<p>it maybe another way to speed up for golang like prefix tree instead of using regexes, any one know a something similar for golang?