Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Headless Chrome version detected to be 0.0.0 #2762

Closed
mgol opened this issue Jul 7, 2017 · 3 comments · Fixed by ua-parser/uap-core#263, JetBrains/ring-ui#516, Narshe1412/nuarca-sql#25 or karronoli/redpen#10

Comments

@mgol
Copy link
Contributor

mgol commented Jul 7, 2017

Expected behaviour

Karma should display a real version number of Chrome Headless.

Actual behaviour

It always displays HeadlessChrome 0.0.0 (Mac OS X 10.12.5).

Environment Details

  • Karma version (output of karma --version):
    1.7.0
  • Relevant part of your karma.config.js file
        browsers: ['ChromeHeadless'],

Steps to reproduce the behaviour

  1. Specify browsers: ['ChromeHeadless'] in the Karma config.
  2. Run any tests.
  3. Look at the terminal.

User agent of Chrome Headless contains HeadlessChrome instead of Chrome; I expect some user agent parsing is failing here. An example user agent of Chrome 59 headless on macOS Sierra:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/59.0.3071.115 Safari/537.36

mgol added a commit to mgol/uap-core that referenced this issue Jul 26, 2017
The initial implementation of the Headless Chrome detection (ua-parser#228) didn't detect
versions of the headless version. This has been fixed.

A test for Ubuntu Chromium in headless mode was also added. I haven't made it
recognized as HeadlessChromium as it has HeadlessChrome in the user agent. It
might be worthwhile to check how a pure compiled from source Chromium behaves.
Nevertheless, this commit is still an improvement.

Ref ua-parser#228
Ref karma-runner/karma#2762
@mgol
Copy link
Contributor Author

mgol commented Jul 26, 2017

An upstream PR to uap-core: ua-parser/uap-core#263.

mgol added a commit to mgol/uap-core that referenced this issue Nov 8, 2017
The initial implementation of the Headless Chrome detection (ua-parser#228) didn't detect
versions of the headless version. This has been fixed.

A test for Ubuntu Chromium in headless mode was also added. I haven't made it
recognized as HeadlessChromium as it has HeadlessChrome in the user agent. It
might be worthwhile to check how a pure compiled from source Chromium behaves.
Nevertheless, this commit is still an improvement.

Ref ua-parser#228
Ref karma-runner/karma#2762
mgol added a commit to mgol/uap-core that referenced this issue Nov 8, 2017
The initial implementation of the Headless Chrome detection (ua-parser#228) didn't detect
versions of the headless version. This has been fixed.

A test for Ubuntu Chromium in headless mode was also added. I haven't made it
recognized as HeadlessChromium as it has HeadlessChrome in the user agent. It
might be worthwhile to check how a pure compiled from source Chromium behaves.
Nevertheless, this commit is still an improvement.

Ref ua-parser#228
Ref karma-runner/karma#2762
@rkuzsma
Copy link
Contributor

rkuzsma commented Oct 27, 2018

The upstream PR is resolved. I confirmed locally that upgrading useragent from 2.2.1 to 2.3.0 in the Karma package.json fixes this problem. Shall I open a PR for that version bump?

@johnjbarton
Copy link
Contributor

yes

rkuzsma added a commit to rkuzsma/karma that referenced this issue Nov 3, 2018
Bump useragent 2.3.0 to pull in ua-parser/uap-core#263
Fixes [karma-runner#2762](karma-runner#2762) Headless Chrome version detected to be 0.0.0
rkuzsma added a commit to rkuzsma/karma that referenced this issue Nov 3, 2018
Bump useragent 2.3.0 to pull in ua-parser/uap-core#263 in which Headless Chrome version detected to be 0.0.0.
Update tests to reflect latest useragent OS major version string identifiers.
Fixes karma-runner#2762
rkuzsma added a commit to rkuzsma/karma that referenced this issue Nov 3, 2018
Bump useragent 2.3.0 to pull in ua-parser/uap-core#263 in which Headless Chrome version detected to be 0.0.0.
Update tests to reflect latest useragent OS major version string identifiers.
Fixes karma-runner#2762
rkuzsma added a commit to rkuzsma/karma that referenced this issue Nov 4, 2018
wmfgerrit pushed a commit to wikimedia/mediawiki that referenced this issue Feb 10, 2019
This fixes the bug where HeadlessChrome was always shown as
version 0.0.0 in the console output, which makes it rather
difficult to debug which Chrome version is installed.

Upstream karma-runner/karma#2762,
which updates the ua-parser library to a version that fixes
that bug.

Change-Id: I0b7fe7f8a90649592c4d31fb3055cdc9e8d34814
russellwhitaker added a commit to russellwhitaker/uap-core that referenced this issue Jun 19, 2019
* Fix Slack, HipChat, and a few android browsers.

Fix Slack Desktop Client detection on Windows and Mac.
Add support for HipChat on Mac and Windows.
Fix Macthon and Crosswalk support on Android.

* add Qwantify spider

* Modified Catchpoint regex to account for Catchpoint or Catchpoint bot

* Resolve conflicts

* [ua-parser#136] Fixing detection error for Lumia

* [ua-parser#233] fix for Edge 12

* Add support for Chrome Mobile WebView detection

* Missed a property during merge, added back now

* Add several popular RSS bots to regexes.yaml

* Added new relic pinger bot

* fixed some case on gionee device

* Fix version parsing for Facebook and Pinterest app

The patch number was wrongly captured.

* Added Pinterestbot to differentiate between the app and the bot

* Podcast catcher applications

* Add support for Box Drive, Sync, and Notes

* - removing node 0.12 as mocha discontinued support
- adding node v6.x and v8.x

* Parse Headless Chrome versions

The initial implementation of the Headless Chrome detection (ua-parser#228) didn't detect
versions of the headless version. This has been fixed.

A test for Ubuntu Chromium in headless mode was also added. I haven't made it
recognized as HeadlessChromium as it has HeadlessChrome in the user agent. It
might be worthwhile to check how a pure compiled from source Chromium behaves.
Nevertheless, this commit is still an improvement.

Ref ua-parser#228
Ref karma-runner/karma#2762

* Add a test for a bare Chrome 60 instance

* Add Evolution CardDav/CalDav user agent

* Add Roundcube CardDav plugin user agent

* Add DAVdroid

* Add DAVdroid F-Droid variant

* Add Nextcloud desktop sync client

* Add Nextcloud android app

* add test for applenews browser

* Add regex to detect AppleNews as WKWebView

* Fix test and add new case for iPhone

* Fix regexps and tests for recognizing windows majors better

* Point to reference implementation where there is replacements supported with minor

* Update package.json to point public repo

* Update patterns for IE compatibility mode

* iOS 10.3.x and 11.x recognition

* Update package.json

* Update package.json

* Add default regex to detect iOS for unknown versions

* Fixing yaml syntax in podcasting_user_agent_strings.yaml

Symfony's yaml parser choked on these three lines since they're missing the colon.

* Update regexes.yaml to include Tableau

* add test case for Tableau

* Update regexes.yaml

Add support for CFNetwork macOS Apps on macOS v. 10.13

* Update test_os.yaml

Added test

* Add support for OktaMobile

* add some more matching for RCA phones

* little fix

* Fix merge conflict

* Added support for Outlook >= 2.62.0 running on iOS

* Should account for Trident/8.0 - "Compatibility view of Win10 with Internet Explorer 11"

* Fix ESPN Radio podcast catcher regex

Make it more precise and compatible with Boost.Regex syntax as well.

* Add "Instagram" app

* Add "Flipboard" (iOS,Android) and "Onefootball" (Android) apps

* updated test cases for SznProhlizec; new family name

* Replace empty alternations by optional group

A popular regexp implementation of Rust does not allow empty
alternations.

* Add "Flipboard-Briefing" and tests

* Add ESPN Radio podcast tests to test_ua.yaml

* Add Waterfox/Basilisk Firefox variants

* Removed .project from .gitignore

* fix invalid indentation in yaml

* Add HTTP clients for Go, Scala, Rust (reqwest)

* Add clients to access AWS S3 (Simple Storage Service)

* Add cloud storage clients: https://cyberduck.io/,
https://rclone.org/ and http://s3browser.com/

* Add download clients lftp (https://lftp.yar.ru/),
Axel (https://github.com/axel-download-accelerator/axel),
aria2 (https://aria2.github.io/) and PycURL (http://pycurl.io/)

* Add variants of Linux OS sent via Wget

* Add Naver Yeti and Daum to Spiders regex

* Added OS and UserAgent parser for Salesforce UA on Android

* Add support for patch_minor when detecting Chrome.

* Replace empty alternations by optional group

A popular regexp implementation of Rust does not allow empty
alternations.

* Add Naver Yeti and Daum to Spiders regex

* add support for mac os detection when agent is macoutlook

* Add patch_minor to other Chrome test cases

* Update Android Regex to allow for single digit OS versions

The current Android 9 user agent is as follows
Mozilla/5.0 (Linux; Android 9; Pixel Build/PPP3.180510.008) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.81 Mobile Safari/537.36
This commit allows the code to parse 9 as a valid OS version.

* Added Apple Watch and HomePod devices

* Added tests for Apple Watch & HomePod

* Fixed test

* Fix ua-parser#326: add insomnia user-agent

* iOS CFNetwork recognition update

- 9.3.x
- 10.2.1
- 11.2.6
- 11.3
- 11.4.x
- 12

Signed-off-by: Vitaliy Khamin <vitaliykhamin@gmail.com>

* Support WebView detection in Android KitKat to Lollipop

* Fix to identify MI devices

Dalvik/2.1.0 (Linux; U; Android 8.0.0; Mi A1 MIUI/V9.5.13.0.ODHMIFA)
Dalvik/2.1.0 (Linux; U; Android 5.0.2; Mi 4i MIUI/V8.1.7.0.LXIMIDI)

* Added Yahoo Mail Proxy to regexes.yaml

* Add test.

* Fix ua string in test

* Fix actual UA. Happy Monday

* Add support for Whale browser

* Fixed Google Pixel detection

Added tests

* Fix indenting in regexes.yaml

The additional spaces may cause IDEs (specifically IntelliJ in my case) to transform this into a tab character. As a result of this, Java can not properly parse the YAML file, and every look up throws the following exception `org.yaml.snakeyaml.scanner.ScannerException`.

By placing the comment on the expected level, parsing works as intended

* Add parser for Citrix Chrome app on Chrome OS

* Fix tests formatting and regex formatting

* Fix ua-parser#271: add Google user-agent on iOS

* Handle useragents that present Windows 10

* Added Snapchat detection

* Detect Facebook without FBAV version

Added test

* Fixed typo

* Added support for Facebook Messenger

* update salesforce regex

handle single digit android versions

* update salesforce tests

test single digit android versions

* split windows 8.1 version

* Add @commenthol to maintainers

* Update regexes.yaml

Lots of missing escapes on `.`s; I only did a few of them.

* safe regexes

* Ask users to test for ReDoS in CONTRIBUTING.md

* Safeify FB_IAB

* fix os for salesforce agent

* add regexes tests to npm test

* uap-ref-impl needs a new version published on npm

* remove unnecessary group

* remove node v4+v6, adding v10

incompatible module dependencies

* npmignore

* 0.6.0

* Adding tests and rules for PTST Webpagetest.org spiders

* Add LINE Browser

* User agent detection: ViaFree app

* OS detection: tvOS in apps

* Test cases

* Fix ReDoS vulnerability

* 0.6.1

* Fix tvOS regex

* 0.6.2

* fix: prevent backtracking in crawler, bot regexes

* 0.6.3

* Formatting regex for proper extraction and tests

* Setting expected value for device model properly

* Parse iPhone, iPad, and iPod as iOS devices

There is already a parser that uses this same regex for detecting
Mobile Safari Webviews, which we should also identify as iOS devices.

* Fixed regexes matching some user agent on windows in order avoid embedding the version number into the family string

* 0.6.4

* Add UA for GSA ("Google Search App") on Android, plus tests

* Fixes as per
ua-parser#372 (comment)

Also removed the example UA strings as they are in the tests

* Added Skype for Business detection

* Adding Datanyze UA and tests

* Removing device_replacement from UA parser

* Tidying up UA parser and adding test for OS

* Fixing user_agent_parsers replacements

* add MiuiBrowser and Mint Browser regexes

* 0.6.5

* Add Microsoft Office

* Add Ghost User-Agent String and tests

* Handling of cases where PTST doesn't have minor version

* device regexp simplification

* Add Sailfish OS and Sailfish Browser (ua-parser#391)

* Fixes case where Palo Alto identifies with multiple versions of Windows.

* 0.6.6

* 0.6.7

* Added backers and sponsors on the README

* Add Sumsung SC-01F

* New browser versions remove OS build info from user agent
https://www.chromestatus.com/feature/4558585463832576

* added Edge with Chromium UA and test

* fix test

* support Apple Watch devices

* Add regex for Xiaomi MIX, MIX 2 and MIX 2S.

http://www.fynas.com/ua/search?d=&b=MIUI%E6%B5%8F%E8%A7%88%E5%99%A8&k=MIX&page=1

* adding patch and minor patch to edge. instead of adding a regex for edge with crome modifued the existing one

* fixing tests

* formatting

* Add regex for chrome browser in Samsung Android phones.

native browser in Samsung device is always ok.
Mozilla/5.0 (Linux; Android 8.0.0; SAMSUNG SM-G9500 Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/9.3 Chrome/67.0.3396.87 Mobile Safari/537.36

But chrome browser was parsed to Generic SmartPhone, here's the UA:
Mozilla/5.0 (Linux; Android 8.0.0; SM-G9500) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Mobile Safari/537.36

* Moved Facebook rules before "Bot general matcher"

We noticed UAs from Orange that contained OrangeBotswana that were caught
by the bot filter.

* remove prepended 'User agent:' from User-Agent in test_ua.yaml

* 0.6.8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment