fnando / browser

Do some browser detection with Ruby. Includes ActionController integration.
MIT License
2.44k stars 358 forks source link

Distinguish Edge(Chromium) from EdgeHTML(old, deprecated and proprietary) engines #523

Closed nfedyashev closed 2 years ago

nfedyashev commented 3 years ago

Description

EdgeHTML is a proprietary browser engine from Microsoft. Edge is a Chromium-based browser.

They have similar user agents but those are completely different browsers and browser engines. It might be not very common for a user to blacklist old&deprecated EdgeHTML browser while allowing a new Edge(Chromium-based).

How to reproduce

new Edge: user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3763.0 Safari/537.36 Edg/75.0.131.0' browser = Browser.new(user_agent) ; puts browser.edge? => true

old Edge/EdgeHTML: user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763' browser = Browser.new(user_agent) ; puts browser.edge? => true

What do you expect

I guess for new edge it should be like

edge? => true

edgeHTML? => false

and for EdgeHTML it has to be the opposite.

Software:

guillaumebriday commented 2 years ago

That would be great!

How can we help @fnando?

fnando commented 2 years ago

Hey! Sorry for not taking a look sooner.

I think we shouldn't change the way edge? works (technically they're both Edge), but rather just introduce edge_html?, or even better chromium_based?.

What do you think?