Closed Wyy-Hardwork closed 1 month ago
你上面的dict是根据 此链接 中的这部分代码片段解析出来的吗?
eval(function(p,a,c,k,e,r){e=String;if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'[0-35-8]'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('var h=5.6(\'7\').8;h=h.0(1 2(\'鈥淺',"3"),"銆�").0(1 2(\'鈥漒',"3"),"銆�").0(1 2(\'鈥榎',"3"),"銆�").0(1 2(\'鈥橽',"3"),"銆�").0(1 2("顮�","3"),"鐨�").0(1 2("顮�","3"),"涓€").0(1 2("睢�","3"),"鏄�").0(1 2("顮�","3"),"浜�").0(1 2("顮�","3"),"鎴�").0(1 2("睢�","3"),"涓�").0(1 2("顮�","3"),"浜�").0(1 2("睢�","3"),"鍦�").0(1 2("顮�","3"),"浠�").0(1 2("睢�","3"),"鏈�").0(1 2("顮�","3"),"杩�").0(1 2("顮�","3"),"涓�").0(1 2("顮�","3"),"涓�").0(1 2("顮�","3"),"浠�").0(1 2("顮�","3"),"鏉�").0(1 2("顮�","3"),"鍒�").0(1 2("顮�","3"),"鏃�").0(1 2("顮�","3"),"澶�").0(1 2("睢�","3"),"鍦�").0(1 2("顮�","3"),"涓�").0(1 2("顮�","3"),"瀛�").0(1 2("顮�","3"),"涓�").0(1 2("睢�","3"),"浣�").0(1 2("睢€","3"),"璇�").0(1 2("顮�","3"),"鐢�").0(1 2("顮�","3"),"鍥�").0(1 2("顮�","3"),"骞�").0(1 2("睢�","3"),"鐫€").0(1 2("睢�","3"),"灏�").0(1 2("顮€","3"),"閭�").0(1 2("睢�","3"),"鍜�").0(1 2("顮�","3"),"瑕�").0(1 2("睢�","3"),"濂�").0(1 2("顮�","3"),"鍑�").0(1 2("顮�","3"),"涔�").0(1 2("睢�","3"),"寰�").0(1 2("顮�","3"),"閲�").0(1 2("顮�","3"),"鍚�").0(1 2("睢�","3"),"鑷�").0(1 2("顮�","3"),"浠�").0(1 2("顮�","3"),"浼�").0(1 2("睢�","3"),"瀹�").0(1 2("顮�","3"),"鍙�").0(1 2("顮�","3"),"涓�").0(1 2("顮�","3"),"鑰�").0(1 2("顮�","3"),"杩�").0(1 2("顮�","3"),"澶�").0(1 2("顮�","3"),"鍘�").0(1 2("顮�","3"),"鑳�").0(1 2("睢�","3"),"瀵�").0(1 2("顮�","3"),"灏�").0(1 2("顮�","3"),"澶�").0(1 2("顮�","3"),"鐒�").0(1 2("顮�","3"),"浜�").0(1 2("睢�","3"),"蹇�").0(1 2("顮�","3"),"瀛�").0(1 2("睢�","3"),"涔�").0(1 2("顮�","3"),"涔�").0(1 2("顮�","3"),"閮�").0(1 2("睢�","3"),"濂�").0(1 2("顮�","3"),"鐪�").0(1 2("顮�","3"),"璧�").0(1 2("顮�","3"),"鍙�").0(1 2("顮�","3"),"褰�").0(1 2("睢�","3"),"娌�").0(1 2("睢�","3"),"鎴�").0(1 2("睢�","3"),"鍙�").0(1 2("睢�","3"),"濡�").0(1 2("顮�","3"),"浜�").0(1 2("顮�","3"),"鎶�").0(1 2("睢�","3"),"杩�").0(1 2("睢�","3"),"鐢�").0(1 2("顮�","3"),"绗�").0(1 2("睢�","3"),"鏍�").0(1 2("顮�","3"),"閬�").0(1 2("顮�","3"),"鎯�").0(1 2("顮�","3"),"浣�").0(1 2("顮�","3"),"绉�").0(1 2("顮�","3"),"寮€").0(1 2("睢�","3"),"缇�").0(1 2("顮�","3"),"涔�").0(1 2("睢�","3"),"闃�").0(1 2("顮�","3"),"娑�").0(1 2("顮�","3"),"鑼�").0(1 2("顮�","3"),"娆�").0(1 2("睢�","3"),"鍛�").0(1 2("睢�","3"),"鑲�").0(1 2("顮�","3"),"浜�").0(1 2("顮�","3"),"鎬�").0(1 2("顮�","3"),"鑳�").0(1 2("睢�","3"),"绉�").0(1 2("顮�","3"),"绌�").0(1 2("睢�","3"),"娣�").0(1 2("睢�","3"),"鑷€").0(1 2("顮�","3"),"鑸�").0(1 2("顮�","3"),"灏�").0(1 2("睢�","3"),"鑴�").0(1 2("睢�","3"),"瑁�").0(1 2("睢�","3"),"楠�").0(1 2("睢�","3"),"鍞�");5.6(\'7\').8=h;',[],9,'replace|new|RegExp|gi||document|getElementById|acontentz|innerHTML'.split('|'),0,{}));
目前这个爬虫库的爬取目标网站并不是 手机UI版本,而是 PC web 版本。所以我暂时没法准确地回答你关于手机UI网站版本的js文本反混淆问题。 但从上面的js代码来看,它的手机UI版本依旧采用的是js正则表达式替换的方式(RegExp),你只需将其反混淆即可。从代码混淆的力度来看,难度不算高。
但是我印象中,它应该不只是js文本混淆,它可能还有CSS字体混淆,这个CSS字体混淆的解决方案是OCR。关于CSS字体混淆,此前已经有人提问过了,记录在一个issue中,如果你对此细节感兴趣,请查看 #46。 OCR的实现代码位置:你可以参阅 _patch_font_obfuscation函数。 如果你还有其他疑问,可以继续追问。
感谢解答,对不上的原因找到了,请求的是PC端的文档但是用的是移动端的字体解密,两端加密字不一样(代理地址写错了😂)
顺便这里附上两端的加密内容,供大伙使用(也不知道可以撑多久==)。
// 手机UI版本
let map = {
"": "的",
"": "一",
"": "是",
"": "了",
"": "我",
"": "不",
"": "人",
"": "在",
"": "他",
"": "有",
"": "这",
"": "个",
"": "上",
"": "们",
"": "来",
"": "到",
"": "时",
"": "大",
"": "地",
"": "为",
"": "子",
"": "中",
"": "你",
"": "说",
"": "生",
"": "国",
"": "年",
"": "着",
"": "就",
"": "那",
"": "和",
"": "要",
"": "她",
"": "出",
"": "也",
"": "得",
"": "里",
"": "后",
"": "自",
"": "以",
"": "会",
"": "家",
"": "可",
"": "下",
"": "而",
"": "过",
"": "天",
"": "去",
"": "能",
"": "对",
"": "小",
"": "多",
"": "然",
"": "于",
"": "心",
"": "学",
"": "么",
"": "之",
"": "都",
"": "好",
"": "看",
"": "起",
"": "发",
"": "当",
"": "没",
"": "成",
"": "只",
"": "如",
"": "事",
"": "把",
"": "还",
"": "用",
"": "第",
"": "样",
"": "道",
"": "想",
"": "作",
"": "种",
"": "开",
"": "美",
"": "乳",
"": "阴",
"": "液",
"": "茎",
"": "欲",
"": "呻",
"": "肉",
"": "交",
"": "性",
"": "胸",
"": "私",
"": "穴",
"": "淫",
"": "臀",
"": "舔",
"": "射",
"": "脱",
"": "裸",
"": "骚",
"": "唇",
};
// PC Web版本
let map = {
"": "的",
"": "一",
"": "是",
"": "了",
"": "我",
"": "不",
"": "人",
"": "在",
"": "他",
"": "有",
"": "这",
"": "个",
"": "上",
"": "们",
"": "来",
"": "到",
"": "时",
"": "大",
"": "地",
"": "为",
"": "子",
"": "中",
"": "你",
"": "说",
"": "生",
"": "国",
"": "年",
"": "着",
"": "就",
"": "那",
"": "和",
"": "要",
"": "她",
"": "出",
"": "也",
"": "得",
"": "里",
"": "后",
"": "自",
"": "以",
"": "会",
"": "家",
"": "可",
"": "下",
"": "而",
"": "过",
"": "天",
"": "去",
"": "能",
"": "对",
"": "小",
"": "多",
"": "然",
"": "于",
"": "心",
"": "学",
"": "么",
"": "之",
"": "都",
"": "好",
"": "看",
"": "起",
"": "发",
"": "当",
"": "没",
"": "成",
"": "只",
"": "如",
"": "事",
"": "把",
"": "还",
"": "用",
"": "第",
"": "样",
"": "道",
"": "想",
"": "作",
"": "种",
"": "开",
"": "美",
"": "乳",
"": "阴",
"": "液",
"": "茎",
"": "欲",
"": "呻",
"": "肉",
"": "交",
"": "性",
"": "胸",
"": "私",
"": "穴",
"": "淫",
"": "臀",
"": "舔",
"": "射",
"": "脱",
"": "裸",
"": "骚",
"": "唇",
}
另外OCR解法学到了!再次感谢大佬解答🙏
https://github.com/Montaro2017/bili_novel_packer 这个用的是用手机网页的 手机端有两种加密,一种使用正则表达式的加密,另一种是字体加密 正则表达式的JS代码混淆了但是很容易分析 字体的需要对字体文件进行分析处理,详细可以看我的博客 https://www.cnblogs.com/montaro/p/18284319
大佬你好,如果只是单纯用对照表进行文字替换,我发现文字是对不上的,比如 ban_word = { "": "的", "": "一", "": "是", "": "了", "": "我", "": "不", "": "人", "": "在", "": "他", "": "有", "": "这", "": "个", "": "上", "": "们", "": "来", "": "到", "": "时", "": "大", "": "地", "": "为", "": "子", "": "中", "": "你", "": "说", "": "生", "": "国", "": "年", "": "着", ... } 内容来源 https://www.bilinovel.com/themes/zhmb/js/readtools.js
上面的内容我发现和网站内加密字不能正确对应,请问一下是怎么解决的呢