当前位置: 首页 > Web前端 > JavaScript

使用浏览器扩展程序篡改网页中的JS文件

时间:2023-03-27 12:56:11 JavaScript

鏈€杩戦粦浜嗕竴涓墠绔〉闈紙鎴戜滑鑷繁鐨勭綉绔欙紝浣嗘殏鏃舵棤娉曚粠婧愪唬鐮佷慨鏀癸級锛屼互澧炲己鍏堕儴鍒嗗姛鑳姐€傝繖浜涘寮哄姛鑳介渶瑕佺敤鍒扮綉椤典腑鐨勪竴浜涙帴鍙o紝璋冭瘯鍚庡彂鐜伴渶瑕佸鎺ュ彛浼犺緭鐨勮〃鍗曡繘琛岀鍚嶉獙璇併€傚皾璇曚簡涓€涓櫘閫氱殑Hash绠楁硶鍜屽嚑娆¤凯浠g粍鍚堬紝浣嗘槸杈撳叆杈撳嚭涓嶅尮閰嶏紝閫嗗悜鏁翠釜绠楁硶鎴愭湰澶珮锛屾墍浠ユ墦绠楃敤娴忚鍣ㄦ墿灞曠鏀笿S锛岀洿鎺ユ毚闇茬鍚嶇晫闈€?.JS鏂囦欢鎷︽埅绡℃敼宸茬粡璋冭瘯濂藉畾浣嶅埌绛惧悕绠楁硶鎵€鍦ㄧ殑鍦版柟锛岀劧鍚庡皢鍓嶅悗鍑犳浠g爜浣滀负鐗瑰緛浠g爜銆傚眾鏃讹紝鍙渶灏嗚鎻掑叆鐨勫唴瀹逛互鍚堥€傜殑鏂瑰紡娣诲姞鍒扮壒寰佷唬鐮佷腑锛岀劧鍚庢浛鎹㈠師鏂囦欢鍗冲彲銆傜鍚嶄唬鐮佸彲浠ヨ揪鍒扮鏀笿S鐨勬晥鏋溿€?.1JS鏂囦欢鎷︽埅鏈鎷︽埅闇€瑕亀ebRequestBlocking鍜寃ebRequest鏉冮檺锛屾墍浠ュ湪manifest.json涓0鏄庤繖涓や釜鏉冮檺锛?permissions":[..."webRequest","webRequestBlocking"]骞跺湪background.js涓敤绛惧悕杩囨护绠楁硶JS璇锋眰锛歝hrome.webRequest.onBeforeRequest.addListener(function(details){const{url}=details;if(/xxxx\.js/.test(url)){//杩欎釜鍑芥暟搴旇鏄悓姝ヨ繑鍥炵殑锛屾墍浠ユ垜浠笉鑳界鏀箇iththefilehere//浣嗛鍏堣繑鍥炰竴涓€渂eacon鈥濓紝骞跺皢鍏朵綔涓烘敞鍏S鐨勫嚟鎹敞鍏om//secretPageId纭繚椤甸潰姝g‘锛屼絾杩欎技涔庢槸澶氫綑鐨刢onstsecretPageId=Date.now()+"--"+Math.random();constredirectUrl=`data:javascript,varnode=document.createElement('div');node.id='secretPageId';node.innerHTML="${secretPageId}";document.body.appendChild(node);`.replace(/\n/g,'');getAndChangeScript(url,secretPageId);return{redirectUrl}}return{redirectUrl:url,}});1.2JS鏂囦欢绡℃敼浣犲彲鑳藉凡缁忔敞鎰忓埌锛屽湪涓婇潰鐨勪唬鐮佺墖娈典腑锛岃繕娌℃湁瀹氫箟璋冪敤鐨刧etAndChangeScript鍑芥暟锛岀湅鍑芥暟鍚嶅簲璇ョ寽娴嬫槸鐢ㄦ潵绡℃敼JS鐨勶細asyncfunctiongetAndChangeScript(src,secretPageId){constscriptStr=await(awaitfetch(url)).text();constchangedScript=scriptStr.replace(//杩欓噷鏄壒寰佷唬鐮?e.filterNoNumber=Y;",//灏嗕慨鏀瑰悗鐨勭壒寰佷唬鐮佹浛鎹负鍘熸枃"window.signMaker=J;e.filterNoNumber=Y;");scriptInjectBus.send(secretPageId,changedScript);}琚鏀圭殑JS娉ㄥ叆椤甸潰2.1灏嗘枃浠朵粠background.js鍙戦€佸埌content.jsbackground.js姣曠珶涓嶈兘鎿嶄綔DOM锛屾墍浠ュ彧鑳界敤content.js锛屼竴涓€滀紶閫侀棬鈥?闇€瑕佸彂閫佽繖浜涘唴瀹瑰湪background.js绔紝瀹氫箟涓€涓猻criptInjectBus鏉ユ墽琛屾鎿嶄綔锛殅);};constlisten=function(handler){listenQueue.push(handler);};return{send,listen};})();骞舵敹鍚潵鑷唴瀹圭殑娑堟伅锛歝hrome.tabs.onUpdated銆俛ddListener(function(tabId,changeInfo,tab){scriptInjectBus.listen(function(info){chrome.tabs.sendMessage(tab.id,info,function(res){});});});馃憜杩欓噷浣跨敤tabs锛岃寰楀湪manifest.json涓坊鍔爐abs鏉冮檺銆?.2content.js鎺ユ敹浠g爜娉ㄥ叆椤甸潰content.js鎯冲繀澶у閮藉緢鐔熸倝锛歝hrome.runtime.onMessage.addListener(function(info){constnode=document.getElementById('secretPageId');constsecretPageId=node.innerHTML.trim();if(secretPageId&&secretPageId===info.secretPageId){node.innerHTML='';constscriptNode=document.createElement('script');scriptNode.innerHTML=info.js;鏂囨。銆俠ody.appendChild(scriptNode);}}绗笁锛屼篃璁歌繖涓嶆槸鏈€濂界殑鏂规硶锛屼絾鏄畠鏄湁鏁堢殑銆傚浜庝綘鑷繁鐨勭綉绔欙紝鏈€濂界殑鏂规硶褰撶劧鏄湪婧愪唬鐮佷腑淇敼瀹冦€傝繖绉嶄娇鐢ㄦ祻瑙堝櫒鎵╁睍鐨勯瓟鏈阀濡欑殑鏄紝鑷冲皯瀛樺湪浠ヤ笅缂洪櫡锛氫笉鏀寔閫氳繃import鏂规硶鐩存帴瀵煎叆鐨凟SM妯″潡锛涘浜庝緷璧朖S鍔犺浇鏃跺簭鐨勯〉闈紝鏃跺簭鎵撲贡浼氬奖鍝嶅師鏈夌殑閫昏緫銆?/p>