It garbles advertisers’ data as a result, but you must disable uBlock Origin to run it; they can’t work simultaneously. I recently moved to it and, so far, am never looking back!

  • Goretantath@lemm.ee
    link
    fedilink
    English
    arrow-up
    5
    arrow-down
    12
    ·
    16 days ago

    Im too scared to trust it works out fine in the end to use it, been raised on the idea that interacting with an ad in any way other than task managering the pop up is dangerous. Wheres the part of the code that makes it safe and a write up of how it functions, otherwise im fine just blocking ads with regular ublock.

    • techt@lemmy.world
      link
      fedilink
      English
      arrow-up
      3
      ·
      edit-2
      15 days ago

      Here you go, from the repo:

        const visitAd = function (ad) {
          function timeoutError(xhr) {
            return onVisitError.call(xhr, {
              type: 'timeout'
            });
          }
      
          const url = ad && ad.targetUrl, now = markActivity();
      
          // tell menu/vault we have a new attempt
          broadcast({
            what: 'adAttempt',
            ad: ad
          });
      
          if (xhr) {
      
            if (xhr.delegate.attemptedTs) {
      
              const elapsed = (now - xhr.delegate.attemptedTs);
      
              // TODO: why does this happen... a redirect?
              warn('[TRYING] Attempt to reuse xhr from ' + elapsed + " ms ago");
      
              if (elapsed > visitTimeout)
                timeoutError();
            }
            else {
      
              warn('[TRYING] Attempt to reuse xhr with no attemptedTs!!', xhr);
            }
          }
      
          ad.attempts++;
          ad.attemptedTs = now;
      
          if (!validateTarget(ad)) return deleteAd(ad);
      
          return sendXhr(ad);
          // return openAdInNewTab(ad);
          // return popUnderAd(ad)
        };
      
        const sendXhr = function (ad) {
      
          // if we've parsed an obfuscated target, use it
          const target = ad.parsedTargetUrl || ad.targetUrl;
      
          log('[TRYING] ' + adinfo(ad), ad.targetUrl);
      
          xhr = new XMLHttpRequest();
      
          try {
            xhr.open('get', target, true);
            xhr.withCredentials = true;
            xhr.delegate = ad;
            xhr.timeout = visitTimeout;
            xhr.onload = onVisitResponse;
            xhr.onerror = onVisitError;
            xhr.ontimeout = onVisitError;
            xhr.responseType = ''; // 'document'?;
            xhr.send();
          } catch (e) {
            onVisitError.call(xhr, e);
          }
        }
      
        const onVisitResponse = function () {
      
          this.onload = this.onerror = this.ontimeout = null;
      
          markActivity();
      
          const ad = this.delegate;
      
          if (!ad) {
      
            return err('Request received without Ad: ' + this.responseURL);
          }
      
          if (!ad.id) {
      
            return warn("Visit response from deleted ad! ", ad);
          }
      
          ad.attemptedTs = 0; // reset as visit no longer in progress
      
          const status = this.status || 200, html = this.responseText;
      
          if (failAllVisits || status < 200 || status >= 300) {
            return onVisitError.call(this, {
              status: status,
              responseText: html
            });
          }
      
          try {
      
            if (!isFacebookExternal(this, ad)) {
      
              updateAdOnSuccess(this, ad, parseTitle(this));
            }
      
          } catch (e) {
      
            warn(e.message);
          }
      
          xhr = null; // end the visit
        };
      

      That’s pretty much it! Let me know if it doesn’t make sense, I can annotate it