Is there any way to detect that the user is coming with Blink or Webkit powered Chrome engine? By the way i'm also curious about if i can check somewhere if my browser is with blink or not.
How to detect Blink in Chrome
4.7k views Asked by wintercounter At
2
There are 2 answers
0
Boghyon Hoffmann
On
[...] detect that the user is coming with Blink or Webkit powered Chrome engine
In case you'd like to detect a Chromium browser regardless of how its layout engine is called ("Webkit", "Blink", "FutureEngine3000") or how the browser shell is commercially named ("Chrome", "Edge", "Brave", ...), try the User-Agent Client Hints API:
{
const isChromium = brand => brand.brand === "Chromium";
console.log(!!globalThis.navigator?.userAgentData?.brands?.some(isChromium));
}
For other properties, see https://user-agent-client-hints.glitch.me/javascript.html.
Related Questions in GOOGLE-CHROME
- How to tweak the security policy of Chrome, in order to run "unsafe" snippets in the console?
- Is it possible to manipuate 3rd party Chrome Extensions Network Reqeuests?
- undetected_chromedriver urllib.error.URLError
- Load testing k6 browser + docker
- Editor texto estilo WYSIWYG
- NodeJS crashing chrome browser
- Difficulty Accessing HTTP URLs/IP Addresses Due to Browser Redirecting to HTTPS: Seeking Solutions
- Chrome extension MV3: persistent service worker die after wake up from hibernation
- Attempting to Bundle a Require Command For a Chrome Extension
- Launch URL from C# and detect when browser is closed
- Python selenium scrap data from dynamic website table
- Google Chrome is consuming a lot of CPU on a video call?
- Component drawing error React App on Android + Chrome
- Chrome Selenium CDP Bidi API - Next Commands sended to Target Session have no effect while the initial one does work
- Devtools not working when i try to inspect elements for selenium python it goes to previous page
Related Questions in WEBKIT
- "jumping effect" with sticky position on newer iOS devices
- Cannot display webkit Inspector in ultralight c++
- Webkit attributes do not disable/hide AirPlay button in Safari
- srcset in webkit in xcode
- Occasional deadlock when keyboard input in WKWebview
- rotateY() with perspective not rendering correctly on WebKit
- WKWebView's evaluateJavascript can't access functions in iOS 17
- Webkit callAsyncJavaScript not waitng for async await function call in SwiftUI
- antd scrollbar always visibile (problem on firefox)
- How to input multiple lines in WebKit JavaScriptCore shell?
- Is there a standard API definition for browser engines?
- Print HTML (with Images) to PDF in SwiftUI
- iOS WKWebView's WKProcessPool - when is it safe to share the same process space?
- Webkit scrollbar issue in mobile?
- Overlaying Scrollbar Similar to Spotify (Web) Using CSS and/or Javascript
Related Questions in CHROMIUM
- Why is it impossible to definitively know if your website is running as a PWA or as a website?
- Is it possible to save MHTML with scripts included?
- Chrome PDF print image aspect ratio incorrect - very apparent with small images - is there a workaround?
- How to turn off login pop-up on stackoverflow
- "Inconsistent WhatsApp Web Integration: Error with Manifest File Null Value Reading"
- Possible scroll bug with usage of overflow-hidden on body along with "sr-only" elements?
- How to solve Missing X server or $DISPLAY when trying to change the loaded website in Chromium
- Google Chrome for AWS Lambda as a layer
- Does Chromium pass URLs along with JS to V8?
- Chromium version on Puppeteer build
- Change the blue background of chrome devtool like before
- Native Messaging "Specified native messaging host not found" debugging
- PDF-documents not loading inside iframe in Chrome and Edge
- ReferenceError: ReadableStream is not defined using Puppeteer's page.pdf() on AWS
- Why is MediaQuery.of(context).size.height in Flutter detecting a larger height in Android chromium-based browsers?
Related Questions in BLINK
- Get Skia Commands from Chromium DisplayItemList
- How to Create an Image from HTML Content with Specific Height Using Puppeteer Sharp
- Implementing Dynamic Metro Map Line Highlighting with jQuery
- how to stop cursor from blinking on Chrome
- How to add siren sound to Blink Amazon camera security system?
- Coding of images in Blink archive
- .elf file getting deleted in eclipse cube ide for embedded c/c++
- How browser engine store Css values and using it?
- SVG animation (blinking) inside of animation (blinking)
- Vscode not giving the option to open remote repository
- Recent Chromium memory leak on large HTML canvases?
- undefined symbol:private: static struct blink::WrapperTypeInfo
- How to make a widget blink in Qt with a delay of one second?
- Firefox vs Chrome: different behaviour of "width: fit-content;" Why? Who is right?
- cannot create hex elf files with cmakelists
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Blink is Chrome 28+. So if you are already detecting Chrome via its useragent you could just check:
version >= 28Though not fully reliable if the user agent is spoofed, obviously.For an additional more reliable way you can check the chrome.notifications API status which became available/stable with Blink/Chrome28+ (on ChromeOS, Windows, and Mac and then Android 4.4)See this answer for ref, and this documentation for details.
UPDATE: That previous idea was complicated and unreliable. I removed it.
I ran into a feature that was added with Chrome 28 (namely CSS.supports) which is easier and cleaner:
UPDATE 2: Added an extra check because some Blink browsers like Opera Mobile or Maxthon lack the
window.chromeobject. A v8 feature check is necessary to cover all current Blink engine browsers as of Dec 2014.And for completeness since you asked for a server side programming language too: On the server side or even for JS eventually, just look for
WebKit/537.36. Only a Blink user agent will have that Webkit version. No official Safari version was released with that build number as far as I can tell. However, watch for theIEMobile,TridentorEdgetokens since Windows IE now imitate Android and Blink.