问题描述
我构建了这个文档应用程序:
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”扩展的一部分。
禁用它可以解决问题。是的,闻起来很阴暗。