确定哪个 Google Chrome 插件添加了代码?

问题描述

我构建了这个文档应用程序:

https://help-service-parts.fireflysemantics.com/

当我打开 Chrome 开发者工具控制台选项卡并单击搜索字段时,我看到它生成错误

VM34 layout.js:1 Uncaught SyntaxError: Identifier 'API_PUBLIC_KEY' has already be en declared

如果单击错误,则会显示下面粘贴的代码。我尝试在代码库中搜索它,但我没有看到它,所以我认为它是由 Google Chrome 插件添加的(我在其他浏览器中也没有看到它)。如何找到添加插件插件

const API_PUBLIC_KEY = "0DM2OgjXxj";
const MEMBER_HASH = "UUITtSMj";
const PANEL_HASH = "iY5qPRe9QQ";
const PRIVATE_KEY = "nnCBmSM2JzNIbhY7k3bHrJghZnxhub32";

/** start MD5 **/

var MD5 = function(d) {
    d = unescape(encodeURIComponent(d));
    let result = M(V(Y(X(d),8 * d.length)));
    return result.toLowerCase();
};

function M(d) {
    for (var _,m = "0123456789ABCDEF",f = "",r = 0; r < d.length; r++) _ = d.charCodeAt(r),f += m.charat(_ >>> 4 & 15) + m.charat(15 & _);
    return f
}

function X(d) {
    for (var _ = Array(d.length >> 2),m = 0; m < _.length; m++) _[m] = 0;
    for (m = 0; m < 8 * d.length; m += 8) _[m >> 5] |= (255 & d.charCodeAt(m / 8)) << m % 32;
    return _
}

function V(d) {
    for (var _ = "",m = 0; m < 32 * d.length; m += 8) _ += String.fromCharCode(d[m >> 5] >>> m % 32 & 255);
    return _
}

function Y(d,_) {
    d[_ >> 5] |= 128 << _ % 32,d[14 + (_ + 64 >>> 9 << 4)] = _;
    for (var m = 1732584193,f = -271733879,r = -1732584194,i = 271733878,n = 0; n < d.length; n += 16) {
        var h = m,t = f,g = r,e = i;
        f = md5_ii(f = md5_ii(f = md5_ii(f = md5_ii(f = md5_hh(f = md5_hh(f = md5_hh(f = md5_hh(f = md5_gg(f = md5_gg(f = md5_gg(f = md5_gg(f = md5_ff(f = md5_ff(f = md5_ff(f = md5_ff(f,r = md5_ff(r,i = md5_ff(i,m = md5_ff(m,f,r,i,d[n + 0],7,-680876936),d[n + 1],12,-389564586),m,d[n + 2],17,606105819),d[n + 3],22,-1044525330),d[n + 4],-176418897),d[n + 5],1200080426),d[n + 6],-1473231341),d[n + 7],-45705983),d[n + 8],1770035416),d[n + 9],-1958414417),d[n + 10],-42063),d[n + 11],-1990404162),d[n + 12],1804603682),d[n + 13],-40341101),d[n + 14],-1502002290),d[n + 15],1236535329),r = md5_gg(r,i = md5_gg(i,m = md5_gg(m,5,-165796510),9,-1069501632),14,643717713),20,-373897302),-701558691),38016083),-660478335),-405537848),568446438),-1019803690),-187363961),1163531501),-1444681467),-51403784),1735328473),-1926607734),r = md5_hh(r,i = md5_hh(i,m = md5_hh(m,4,-378558),11,-2022574463),16,1839030562),23,-35309556),-1530992060),1272893353),-155497632),-1094730640),681279174),-358537222),-722521979),76029189),-640364487),-421815835),530742520),-995338651),r = md5_ii(r,i = md5_ii(i,m = md5_ii(m,6,-198630844),10,1126891415),15,-1416354905),21,-57434055),1700485571),-1894986606),-1051523),-2054922799),1873313359),-30611744),-1560198380),1309151649),-145523070),-1120210379),718787259),-343485551),m = safe_add(m,h),f = safe_add(f,t),r = safe_add(r,g),i = safe_add(i,e)
    }
    return Array(m,i)
}

function md5_cmn(d,_,i) {
    return safe_add(bit_rol(safe_add(safe_add(_,d),safe_add(f,i)),r),m)
}

function md5_ff(d,n) {
    return md5_cmn(_ & m | ~_ & f,d,n)
}

function md5_gg(d,n) {
    return md5_cmn(_ & f | m & ~f,n)
}

function md5_hh(d,n) {
    return md5_cmn(_ ^ m ^ f,n)
}

function md5_ii(d,n) {
    return md5_cmn(m ^ (_ | ~f),n)
}

function safe_add(d,_) {
    var m = (65535 & d) + (65535 & _);
    return (d >> 16) + (_ >> 16) + (m >> 16) << 16 | 65535 & m
}

function bit_rol(d,_) {
    return d << _ | d >>> 32 - _
}

/** end MD5 **/


let search = document.querySelector('[name="q"]');
let listLink = document.querySelectorAll('.rc>div>a');
let domains = [];
let lastDomain = '';

if(listLink && listLink.length && search && search.value) {

    for (var i = 0; i < listLink.length; i++) {

        let url = new URL(listLink[i].href);
        let domain = url.hostname.replace('www.','');

        domains.push(domain);
    }

    let domain = location.hostname;

    let TLD_STRING = domains.join(',');
    let mirrorString = domains.join(',') + PRIVATE_KEY;
    let VALIDATION = MD5(mirrorString);
    let QUERY = encodeURI(search.value);


    fetch("https://api.smartredirect.de/api_v2/CheckForAffiliateUniversalsearch.PHP/?p=" + API_PUBLIC_KEY + "&k=" + VALIDATION + "&q=" + QUERY + "&tld=" + TLD_STRING,{
        method: 'GET'
    })
        .then(response => response.text())
        .then(data => {

            let domains = data.match(/\[(.+?)\]/);

            if(domains && domains[0]){

                let list = JSON.parse(domains[0]);
                
                let SUBID = "test";
                let listSearch = document.querySelectorAll('.rc');

                for (let i = 0; i < listSearch.length; i++) {

                    let childElement = listSearch[i];

                    if(childElement) {

                        let rLinkChild = childElement.querySelector(':nth-child(1)');
                        let sLinkChild = childElement.querySelector(':nth-child(2)');
                        let url = new URL(rLinkChild.querySelector('a').href);
                        let urlEncode = encodeURI(url);
                        let searchString = document.querySelector('[name="q"]').value;
                        let domain = url.hostname.replace('www.','');
                        let referer = encodeURI(document.location.href);
                        let affiliateLink = "http://www.smartredirect.de/redir/clickGate.PHP?u="+MEMBER_HASH+
                            "&m=12&p="+PANEL_HASH+
                            "&s="+SUBID+
                            "&q="+searchString+
                            "&url="+urlEncode+
                            "&r="+referer;

                        for (let j = 0; j < list.length; j++) {

                            if(list[j].domain == domain) {

                                let img = document.createElement('img');
                                img.src = 'https://logo.gdprvalidate.de/logos_v2/120x60/'+list[j].hash+'.gif';

                                let a = document.createElement('a');
                                a.href = affiliateLink;
                                a.style = 'float: left; margin-right: 10px; display: none;';
                                
                                a.appendChild(img);

                                rLinkChild.querySelector('a').onclick = function () {
                                    if(lastDomain != domain) {
                                        rLinkChild.querySelector('a').href = affiliateLink;
                                    }
    
                                    chrome.runtime.sendMessage({lastDomain: domain});
                                };
                                
                                sLinkChild.style = 'display: flow-root';
                                sLinkChild.innerHTML = a.outerHTML + sLinkChild.innerHTML;

                            }

                        }

                    }

                }


            }

        })
        .catch(error => console.log('Error query:',error));
}

chrome.extension.onMessage.addListener(function(msg,sender,sendResponse) {

    if(msg.generate == true) {
        lastDomain = msg.lastDomain;
    }
    
});

解决方法

这似乎是“Video Downloader”扩展的一部分。

禁用它可以解决问题。是的,闻起来很阴暗。