You can send arbitrary commands over the protocol fairly easily.
Main.sendOverProtocol('Emulation.setDeviceMetricsOverride', nexus5XMetrics());
Main.sendOverProtocol("Emulation.clearDeviceMetricsOverride");
// It returns a promise| module Entry::TrackerBlocking | |
| extend ActiveSupport::Concern | |
| included do | |
| has_many :blocked_trackers | |
| end | |
| email_service_blockers = { | |
| "ActiveCampaign" => /lt\.php(.*)?l\=open/, | |
| "AWeber" => "openrate.aweber.com", |
| from urlparse import urlparse | |
| from Crypto.Hash import MD2 | |
| import pandas as pd | |
| import cookies as ck | |
| import hackercodecs # noqa | |
| import hashlib | |
| import pyblake2 | |
| import urllib | |
| import sha3 | |
| import mmh3 |
| javascript:var $jscomp={scope:{}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(a){return $jscomp.SYMBOL_PREFIX+(a||"")+$jscomp.symbolCounter_++};$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var a=$jscomp.global.Symbol.iterator;a||(a=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&$jscomp.defineProperty(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIt |
| cfhdojbkjhnklbpkdaibdccddilifddb Adblock Plus 10000000 | |
| gighmmpiobklfepjocnamgkkbiglidom AdBlock 10000000 | |
| efaidnbmnnnibpcajpcglclefindmkaj Adobe Acrobat 10000000 | |
| gomekmidlodglbbmalcneegieacbdmki Avast Online Security 10000000 | |
| eofcbnmajmjmplflapaojjnihcjkigck Avast SafePrice 10000000 | |
| chfdnecihphmhljaaejmgoiahnihplgn AVG Web TuneUp 10000000 | |
| flliilndjeohchalpbbcdekjklbdgfkk Avira Browser Safety 10000000 | |
| gpdjojdkbbmdfjfahjcgigfpmkopogic Pin It Button 10000000 | |
| lifbcibllhkdhoafpjfnlhfpfgnpldfl Skype 10000000 | |
| mallpejgeafdahhflmliiahjdpgbegpk FromDocToPDF 9298905 |
Service Worker - offline support for the web
Progressive apps - high-res icon, splash screen, no URL bar, etc.
| /* | |
| This script attempts to identify all CSS classes mentioned in HTML but not defined in the stylesheets. | |
| In order to use it, just run it in the DevTools console (or add it to DevTools Snippets and run it from there). | |
| Note that this script requires browser to support `fetch` and some ES6 features (fat arrow, Promises, Array.from, Set). You can transpile it to ES5 here: https://babeljs.io/repl/ . | |
| Known limitations: | |
| - it won't be able to take into account some external stylesheets (if CORS isn't set up) | |
| - it will produce false negatives for classes that are mentioned in the comments. |
All of the below properties or methods, when requested/called in JavaScript, will trigger the browser to synchronously calculate the style and layout*. This is also called reflow or layout thrashing, and is common performance bottleneck.
Generally, all APIs that synchronously provide layout metrics will trigger forced reflow / layout. Read on for additional cases and details.
elem.offsetLeft, elem.offsetTop, elem.offsetWidth, elem.offsetHeight, elem.offsetParentextension_id=jifpbeccnghkjeaalbbjmodiffmgedin # change this ID
curl -L -o "$extension_id.zip" "https://clients2.google.com/service/update2/crx?response=redirect&os=mac&arch=x86-64&nacl_arch=x86-64&prod=chromecrx&prodchannel=stable&prodversion=44.0.2403.130&x=id%3D$extension_id%26uc"
unzip -d "$extension_id-source" "$extension_id.zip"Thx to crxviewer for the magic download URL.
| var dispatch = InspectorBackendClass.Connection.prototype.dispatch; | |
| InspectorBackendClass.Connection.prototype.dispatch = function() { | |
| if (arguments && arguments.length > 0) { | |
| var message = arguments[0]; | |
| var object = message ? JSON.parse(message) : {}; | |
| console.log.apply(console,['events', object]); | |
| } | |
| dispatch.apply(this, arguments); | |
| } |