@@ -6,7 +6,6 @@ import logger from '@/share/core/logger';
66import { prefs } from '@/share/core/prefs' ;
77import type { InitdRule , RULE_ACTION_OBJ } from '@/share/core/types' ;
88import {
9- getGlobal ,
109 IS_CHROME ,
1110 IS_SUPPORT_STREAM_FILTER ,
1211 isValidArray ,
@@ -63,12 +62,11 @@ function createHeaderListener(type: string): any {
6362
6463class WebRequestHandler {
6564 private disableAll = false ;
66- private excludeHe = true ;
6765 private includeHeaders = false ;
6866 private modifyBody = false ;
6967 private savedRequestHeader = new Map ( ) ;
7068 private deleteHeaderTimer : ReturnType < typeof setTimeout > | null = null ;
71- private deleteHeaderQueue = new Map ( ) ;
69+ private deleteHeaderQueue = new Map < string , number > ( ) ;
7270
7371 constructor ( ) {
7472 this . handleBeforeRequest = this . handleBeforeRequest . bind ( this ) ;
@@ -123,6 +121,59 @@ class WebRequestHandler {
123121 browser . webRequest . onHeadersReceived . removeListener ( this . handleReceived ) ;
124122 }
125123
124+ // Current not work
125+ private checkHooks ( ) {
126+ const { onBeforeRequest, onBeforeSendHeaders, onHeadersReceived } =
127+ browser . webRequest ;
128+
129+ if ( this . disableAll ) {
130+ return ;
131+ }
132+
133+ if ( ! onBeforeRequest . hasListener ( this . handleBeforeRequest ) ) {
134+ const rules = getRules ( TABLE_NAMES . request , {
135+ runner : 'web_request' ,
136+ } ) ;
137+ if ( isValidArray ( rules ) ) {
138+ onBeforeRequest . addListener (
139+ this . handleBeforeRequest ,
140+ { urls : [ '<all_urls>' ] } ,
141+ [ 'blocking' ] ,
142+ ) ;
143+ }
144+ }
145+
146+ if ( ! onBeforeSendHeaders . hasListener ( this . handleBeforeSend ) ) {
147+ const rules = getRules ( TABLE_NAMES . sendHeader , {
148+ runner : 'web_request' ,
149+ } ) ;
150+ if ( isValidArray ( rules ) ) {
151+ onBeforeSendHeaders . addListener (
152+ this . handleBeforeSend ,
153+ { urls : [ '<all_urls>' ] } ,
154+ createHeaderListener ( 'requestHeaders' ) ,
155+ ) ;
156+ }
157+ }
158+
159+ if ( ! onHeadersReceived . hasListener ( this . handleReceived ) ) {
160+ const rules = getRules ( TABLE_NAMES . receiveHeader , {
161+ runner : 'web_request' ,
162+ } ) ;
163+ // response also can modify headers
164+ const respRules = getRules ( TABLE_NAMES . receiveBody , {
165+ runner : 'web_request' ,
166+ } ) ;
167+ if ( isValidArray ( rules ) || isValidArray ( respRules ) ) {
168+ onHeadersReceived . addListener (
169+ this . handleReceived ,
170+ { urls : [ '<all_urls>' ] } ,
171+ createHeaderListener ( 'responseHeaders' ) ,
172+ ) ;
173+ }
174+ }
175+ }
176+
126177 private loadPrefs ( ) {
127178 emitter . on ( emitter . EVENT_PREFS_UPDATE , ( key : string , val : any ) => {
128179 switch ( key ) {
@@ -151,8 +202,10 @@ class WebRequestHandler {
151202 if ( this . disableAll ) {
152203 return false ;
153204 }
154- // 判断是否是HE自身
155- if ( this . excludeHe && e . url . indexOf ( browser . runtime . getURL ( '' ) ) === 0 ) {
205+ if (
206+ e . url . startsWith ( 'chrome-extension://' ) ||
207+ e . url . startsWith ( 'moz-extension://' )
208+ ) {
156209 return false ;
157210 }
158211 return true ;
@@ -446,23 +499,22 @@ class WebRequestHandler {
446499
447500 private autoDeleteSavedHeader ( id ?: string ) {
448501 if ( id ) {
449- this . deleteHeaderQueue . set ( id , Date . now ( ) / 100 ) ;
502+ this . deleteHeaderQueue . set ( id , Date . now ( ) ) ;
450503 }
451504 if ( this . deleteHeaderTimer !== null ) {
452505 return ;
453506 }
454- this . deleteHeaderTimer = getGlobal ( ) . setTimeout ( ( ) => {
507+ this . deleteHeaderTimer = setTimeout ( ( ) => {
455508 // clear timeout
456509 if ( this . deleteHeaderTimer ) {
457510 clearTimeout ( this . deleteHeaderTimer ) ;
458511 }
459512 this . deleteHeaderTimer = null ;
460- // check time
461- const curTime = Date . now ( ) / 100 ;
513+ const curTime = Date . now ( ) ;
462514 // k: id, v: time
463515 const iter = this . deleteHeaderQueue . entries ( ) ;
464516 for ( const [ k , v ] of iter ) {
465- if ( curTime - v >= 90 ) {
517+ if ( curTime - v >= 9000 ) {
466518 this . savedRequestHeader . delete ( k ) ;
467519 this . deleteHeaderQueue . delete ( k ) ;
468520 }
0 commit comments