Device-detector: Universal Device Detection library from User Agent

by josephscotton 11/27/2024, 8:11 PMwith 41 comments

by donatjon 11/28/2024, 2:19 AM

I've got a more limited and performant library I maintain. It frequently comes in first in speed comparisons.

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"

https://github.com/donatj/PhpUserAgent

by qingcharleson 11/28/2024, 2:28 AM

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".

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

by flufluflufluffyon 11/28/2024, 6:11 PM

It’s all well and good but you really shouldn’t be relying on the user agent string for much more than identifying bots who wish to be known.

by sibeliusson 11/27/2024, 10:21 PM

PHP made it to the front page!

by ChrisMarshallNYon 11/28/2024, 10:16 AM

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 huge, in those days.

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 [c]WAP server), but it had a number of supporters, and its maintainer was pretty sharp, and quite dedicated.

These days, there’s an order of magnitude more devices, and a much greater variety. Big job.

by benzimmeron 11/27/2024, 9:39 PM

If you're looking for a Ruby implementation based on the same underlying user-agent parsing data, here you go: https://github.com/podigee/device_detector

by re-lre-lon 11/28/2024, 1:07 PM

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?

by xnxon 11/27/2024, 9:51 PM

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.

by foreigneron 11/28/2024, 9:02 AM

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?

by legrandmagon 11/27/2024, 10:47 PM

Does something similar exist for python or node.js ?

If not I would like to contribute to that as an open source.

by selamtuxon 11/28/2024, 10:27 AM

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.

it maybe another way to speed up for golang like prefix tree instead of using regexes, any one know a something similar for golang?

by PeterStueron 11/28/2024, 9:32 AM

The reverse would also be handy. Device-pretender: Universal comprehensive User Agent from pretender library.