devtools-detector icon indicating copy to clipboard operation
devtools-detector copied to clipboard

I just put the jsdelivr link to blocked links :3c

Open dora-meowmeow opened this issue 2 years ago • 7 comments

yeah no this is an evil script why would you do this

don't forget to put "https://cdn.jsdelivr.net/npm/devtools-detector" into ABP's blocked pages to disable this!

dora-meowmeow avatar Sep 02 '23 16:09 dora-meowmeow

@catdotjs
Did you find any way to fool these damn devtoon detectors? I have a problem with puppeteer on a website https://github.com/zfcsoftware/puppeteer-real-browser/issues/14

insinfo avatar Feb 24 '24 17:02 insinfo

I'm also facing this problem, but in my case it's this link https://brbeast.com/video/f79921bbae40a577928b76d2fc3edc2a, if I search using uBlock the url https://cdn.jsdelivr.net/npm/devtools-detector, the video player starts playing the video and leaves the page, returning the navigation history to the previous page

insinfo avatar Feb 24 '24 17:02 insinfo

@insinfo best thing to do is to really block non-essential packages. There is probably more than one dev detector or it is using a different dev detector.

dora-meowmeow avatar Feb 24 '24 22:02 dora-meowmeow

Besides whats your goal with this? If you are trying to extract the m3u8 file. You can just install a network monitor program from apt or some other package manager.

dora-meowmeow avatar Feb 24 '24 22:02 dora-meowmeow

Yes, I would like to extract the video, but it seems that there is no M3U8 file, from what I saw it is in a strange format, I still don't know how I can capture the video because the video is coming in chunks from this URL https://mrbeast17.com/cdn/down/disk2/8e011e9e2e455c20b9a94345d0bc7af6/Video/720p/720p_008.html

I managed to make it work in Dart like this:

import 'package:puppeteer/puppeteer.dart';

final blockUrls = [
  //'https://pl20623807.toprevenuegate.com/20/41/ad/2041ad026c42ce264b91586de1c33c6e.js',
  'https://cdn.jsdelivr.net/npm/devtools-detector',
  //'https://code.jquery.com/jquery-1.12.4.min.js',
  //'https://brbeast.com/player/assets/scripts.php?v=6'
];

void main() async {
  final url = 'https://brbeast.com/video/f79921bbae40a577928b76d2fc3edc2a';
  final browser = await puppeteer.launch(
    timeout: Duration(days: 4),
    headless: false,
    defaultViewport: DeviceViewport(width: 1280, height: 720),
  );
   // Set custom user agent
  final customUA =
      'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36';

 

  const script = '''
() => {

  window.onbeforeunload = function() { return "sorry, Your some work will be lost - really sorry."; };
  
  function isDevToolsScript() {
      var stack = new Error().stack;
      return stack.includes('devtool');
  }

  Date.prototype.originalGetTime = Date.prototype.getTime;
  Date.prototype.getTime = function () {
      if (!isDevToolsScript()) {
          return this.originalGetTime();
      }
      return 0;
  }

  const originalOnMessageSetter = Object.getOwnPropertyDescriptor(Worker.prototype, 'onmessage').set;
  Object.defineProperty(Worker.prototype, 'onmessage', {
      set: function (fn) {
          if (!isDevToolsScript()) {
              originalOnMessageSetter.call(this, fn);
              return;
          }
          newFn = (ev) => {
              ev.data.time = 0;
              fn(ev);
          }
          originalOnMessageSetter.call(this, newFn);
      }
  });
}''';
  var page = await browser.newPage();
  await page.evaluateOnNewDocument(script);
  await page.setUserAgent(customUA);

  // Setting page view  { 'width': 1280, 'height': 720 }
  // await page.setViewport(DeviceViewport(width: 1280, height: 720));
// await page.setExtraHTTPHeaders({
// 		'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
// 		'upgrade-insecure-requests': '1',
// 		'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8',
// 		'accept-encoding': 'gzip, deflate, br',
// 		'accept-language': 'en-US,en;q=0.9,en;q=0.8'
// 	});
  await page.setRequestInterception(true);
  page.onRequest.listen((req) async {
    if (blockUrls.contains(req.url)) {
      req.abort();
    } else {
      req.continueRequest();
    }

    print('url:  ${req.url} | ${req.response?.headers}');
  });
  page.goto(url);
  await Future.delayed(Duration(seconds : 4));
  await page.screenshot();
  // await myPage.pdf();
  // await page.evaluate<String>('() => document.title');

  // Gracefully close the browser's process
  //await browser.close();
}


insinfo avatar Feb 25 '24 21:02 insinfo

@insinfo You can do the following steps to avoid a devtool detector without breaking the page:

  1. Open the DevTools
  2. Go to Network panel and search for devtools-detector.js or something like this
  3. Right-Click that file and click on "Block request URL"
  4. Reload the page, you should get an error in the console that says: image
  5. Click on the link, this should take you to the Sources panel
  6. Set a breakpoint at that error line image
  7. Reload the page, the debugger should stop at that line
  8. Go to the Console panel and enter the following line this basically sets all functions to blank ones: devtoolsDetector={addListener: ()=>{},launch:()=>{},versionMap:{}}
  9. Go back to the Sources panel and resume the debugger

This successfully skips the devtools detector and does not break the page. image

Mqxx avatar Mar 07 '24 08:03 Mqxx

You can do the following steps to avoid a devtool detector without breaking the page:

Or just use A tool like this: https://github.com/Andrews54757/Anti-Anti-Debug

Mqxx avatar Apr 29 '24 06:04 Mqxx