mirror of
https://github.com/SickleSec/SnowEyes.git
synced 2026-10-24 08:54:29 +00:00
修复使用插件后登录失败的问题
This commit is contained in:
1 parent
1b738b81ef
commit
0f8a75487f
3 files changed
+46
-49
No files matched your search
+32
-32
@@ -271,9 +271,30 @@ function detectWebpack(pageContent) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// 监听网络请求
|
||||
// 修改 onHeadersReceived 监听器
|
||||
chrome.webRequest.onHeadersReceived.addListener(
|
||||
(details) => {
|
||||
// 获取响应体的函数
|
||||
const getResponseBody = async () => {
|
||||
// 仅对 HTML 和 JS 响应进行检测
|
||||
const contentType = details.responseHeaders
|
||||
.find(h => h.name.toLowerCase() === 'content-type')?.value.toLowerCase() || '';
|
||||
|
||||
if (!contentType.includes('text/html') &&
|
||||
!contentType.includes('javascript') &&
|
||||
!contentType.includes('application/json')) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new Promise(resolve => {
|
||||
chrome.tabs.sendMessage(details.tabId, {
|
||||
type: 'SCAN_CONTENT'
|
||||
}, response => {
|
||||
resolve(response?.content || null);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
if (details.type === 'main_frame') {
|
||||
const headers = details.responseHeaders;
|
||||
if (headers) {
|
||||
@@ -376,7 +397,6 @@ chrome.webRequest.onHeadersReceived.addListener(
|
||||
});
|
||||
chrome.cookies.getAll({url: details.url}, (cookies) => {
|
||||
if (cookies && cookies.length > 0) {
|
||||
console.log(cookies);
|
||||
const cookieNames = cookies.map(cookie => cookie.name).join(';');
|
||||
const tech = identifyTechnologyFromCookie(cookieNames);
|
||||
if (tech) {
|
||||
@@ -400,11 +420,11 @@ chrome.webRequest.onHeadersReceived.addListener(
|
||||
}
|
||||
});
|
||||
|
||||
// 在处理完响应头后,尝试检测 webpack
|
||||
fetch(details.url)
|
||||
.then(response => response.text())
|
||||
.then(body => {
|
||||
const webpackTech = detectWebpack(body);
|
||||
console.log(details.url);
|
||||
// 异步检测 webpack
|
||||
getResponseBody().then(content => {
|
||||
if (content) {
|
||||
const webpackTech = detectWebpack(content);
|
||||
if (webpackTech && !fingerprints.builder) {
|
||||
fingerprints.builder = webpackTech;
|
||||
serverFingerprints.set(details.tabId, fingerprints);
|
||||
@@ -418,36 +438,16 @@ chrome.webRequest.onHeadersReceived.addListener(
|
||||
technology: fingerprints.technology,
|
||||
security: fingerprints.security,
|
||||
analytics: fingerprints.analytics,
|
||||
builder: fingerprints.builder
|
||||
builder: fingerprints.builder
|
||||
}
|
||||
}).catch(() => {});
|
||||
} catch (e) {}
|
||||
}
|
||||
})
|
||||
.catch(() => {/* 忽略错误 */});
|
||||
|
||||
// 存储该标签页的指纹信息
|
||||
serverFingerprints.set(details.tabId, fingerprints);
|
||||
|
||||
// 延迟发送消息,等待内容脚本加载
|
||||
setTimeout(() => {
|
||||
try {
|
||||
chrome.tabs.sendMessage(details.tabId, {
|
||||
type: 'UPDATE_FINGERPRINTS',
|
||||
fingerprints: {
|
||||
server: fingerprints.server,
|
||||
serverComponents: fingerprints.serverComponents,
|
||||
headers: Object.fromEntries(fingerprints.headers),
|
||||
technology: fingerprints.technology,
|
||||
security: fingerprints.security,
|
||||
analytics: fingerprints.analytics,
|
||||
builder: fingerprints.builder
|
||||
}
|
||||
}).catch(() => {
|
||||
});
|
||||
} catch (e) {
|
||||
}
|
||||
}, 500);
|
||||
});
|
||||
|
||||
// 返回响应头
|
||||
return { responseHeaders: details.responseHeaders };
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -140,24 +140,21 @@ const SCANNER_CONFIG = {
|
||||
get FINGER() {
|
||||
return {
|
||||
type: 'FINGER',
|
||||
|
||||
patterns: SCANNER_CONFIG.FINGER.PATTERNS
|
||||
};
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
// 统一的黑名单配置
|
||||
BLACKLIST: {
|
||||
// 值黑名单 - 从 ID_KEY 配置中移出
|
||||
SHORT_VALUES: new Set([
|
||||
'up','in','by','of','is','on','to',
|
||||
'age','all','app','ang','bar','bea','big','bug','com','con','cry','dom','dow',
|
||||
'emp','ent','eta','eye','for','get','gen','has','hei','hid','ing','int','ken',
|
||||
'key','lea','log','low','met','mod','new','nor','not','num','red','obj','old',
|
||||
'out','pic','pre','pro','pop','pun','put','rad','ran','ref','red','reg','ren',
|
||||
'rig','row','sea','set','seq','shi','str','sub','sup','sun','tab','tan','tip',
|
||||
'top','uri','url','use','ver','via'
|
||||
'age','all','app','ang','bar','bea','big','bug','can','com','con','cry','dom',
|
||||
'dow','emp','ent','eta','eye','for','get','gen','has','hei','hid','ing','int',
|
||||
'ken','key','lea','log','low','met','mod','new','nor','not','num','red','obj',
|
||||
'old','out','pic','pre','pro','pop','pun','put','rad','ran','ref','red','reg',
|
||||
'ren','rig','row','sea','set','seq','shi','str','sub','sup','sun','tab','tan',
|
||||
'tip','top','uri','url','use','ver','via'
|
||||
]),
|
||||
MEDIUM_VALUES: new Set([
|
||||
'null','node','when','face','read','load','body','left','mark','down',
|
||||
@@ -174,13 +171,13 @@ const SCANNER_CONFIG = {
|
||||
'line','send','mess','calc','http','rame'
|
||||
]),
|
||||
LONG_VALUES: new Set([
|
||||
'about','alias','apply','array','beare','begin','black','break','broad',
|
||||
'catch','class','close','clear','click','clude','color','count','cover',
|
||||
'croll','crypt','error','false','fault','fetch','final','found','gener',
|
||||
'green','group','guard','index','inner','input','inter','light','login',
|
||||
'opera','param','parse','panel','place','print','phony','radio','range',
|
||||
'right','refer','serve','share','shift','style','tance','title','token',
|
||||
'tract','trans','trave','valid','video','white','write',
|
||||
'about','alias','apply','array','basic','beare','begin','black','break',
|
||||
'broad','catch','class','close','clear','click','clude','color','count',
|
||||
'cover','croll','crypt','error','false','fault','fetch','final','found',
|
||||
'gener','green','group','guard','index','inner','input','inter','light',
|
||||
'login','opera','param','parse','panel','place','print','phony','radio',
|
||||
'range','right','refer','serve','share','shift','style','tance','title',
|
||||
'token','tract','trans','trave','valid','video','white','write',
|
||||
|
||||
'button','cancel','create','double','finger','global','insert','module',
|
||||
'normal','object','popper','triple','search','select','simple','single',
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// 正则表达式缓存
|
||||
const regexCache = {
|
||||
coordPattern: /^coord/,
|
||||
valuePattern: /^\/|true|false|register|signUp|name|http/i,
|
||||
valuePattern: /^\/|true|false|register|signUp|name|basic|http/i,
|
||||
chinesePattern: /^[\u4e00-\u9fa5]+$/,
|
||||
keywordPattern: /^func|variable|input|true|false|newline|null|http|unexpected|error|data|object|brac|beare|str|self|void|num|atom|opts|token|params|result|con|text|stor|sup|pun|emp|this|key|com|ent|met|opera|return|case|pare|ident|reg|invalid/i,
|
||||
camelCasePattern: /\b[_a-z]+(?:[A-Z][a-z]+)+\b/,
|
||||
|
||||
Reference in new issue
Block a user