@@ -35,6 +35,35 @@ browser.webRequest.onBeforeSendHeaders.addListener(
35
35
[ "blocking" , "requestHeaders" ]
36
36
) ;
37
37
38
+ browser . webRequest . onBeforeSendHeaders . addListener (
39
+ function ( e ) {
40
+ let requestHeaders = e . requestHeaders ;
41
+
42
+ requestHeaders =
43
+ requestHeaders . filter ( requestHeader =>
44
+ requestHeader . name . toLowerCase ( ) !== "Origin" . toLowerCase ( )
45
+ ) ;
46
+ requestHeaders =
47
+ requestHeaders . filter ( requestHeader =>
48
+ requestHeader . name . toLowerCase ( ) !== "Referer" . toLowerCase ( )
49
+ ) ;
50
+
51
+ requestHeaders . push ( {
52
+ name : "Referer" ,
53
+ value : "https://lens.google.com/"
54
+ } ) ;
55
+
56
+ requestHeaders . push ( {
57
+ name : "Origin" ,
58
+ value : "https://lens.google.com"
59
+ } ) ;
60
+
61
+ return { requestHeaders }
62
+ } ,
63
+ { urls : [ "https://lens.google.com/v3/*" ] } ,
64
+ [ "blocking" , "requestHeaders" ]
65
+ ) ;
66
+
38
67
async function search_on_google_lens ( image_url , tab ) {
39
68
browser . tabs . sendMessage ( tab . id , {
40
69
type : "load-start" ,
@@ -84,46 +113,19 @@ async function search_on_google_lens(image_url, tab) {
84
113
thinking : image_url . startsWith ( location . origin )
85
114
} ) ;
86
115
87
- const image_data_form = new FormData ( ) ;
88
- image_data_form . set ( "encoded_image" , image_data_processed ) ;
89
- image_data_form . set ( "image_url" , `https://${ generateRandomString ( 12 ) } .com/images/${ generateRandomString ( 12 ) } ` ) ; // Send fake URL
90
- image_data_form . set ( "sbisrc" , "Chromium 98.0.4725.0 Windows" ) ;
91
- const result = await fetchPlus (
92
- `https://lens.google.com/upload?ep=ccm&s=&st=${ generateRandomString ( 12 ) } ` ,
93
- {
94
- method : "POST" ,
95
- body : image_data_form ,
96
- headers : {
97
- "Origin" : "https://lens.google.com" ,
98
- "Referer" : "https://lens.google.com/" ,
99
- }
100
- }
101
- )
102
- . then ( res => {
103
- if ( res . status === 200 ) {
104
- return res ;
105
- } else {
106
- throw new Error ( `${ res . status } ${ res . statusText } ` ) ;
107
- }
108
- } )
109
- . then ( data => data )
110
- . catch ( e => {
111
- browser . tabs . sendMessage ( tab . id , { type : "google-post-error" } ) ;
112
- throw e ;
113
- } ) ;
116
+ const image_data_processed_dataurl = await new Promise ( ( resolve , reject ) => {
117
+ const reader = new FileReader ( ) ;
118
+ reader . onloadend = ( ) => resolve ( reader . result ) ;
119
+ reader . onerror = reject ;
120
+ reader . readAsDataURL ( image_data_processed ) ;
121
+ } ) ;
114
122
115
- const url = result . url ;
116
- if ( url ) {
117
- browser . tabs . sendMessage ( tab . id , { type : "google-post-end" } ) ;
118
- browser . tabs . create ( {
119
- url : new URL ( url , "https://lens.google.com" ) . href ,
120
- windowId : tab . windowId ?? undefined ,
121
- openerTabId : tab . id ?? undefined ,
122
- active : ! settings . get ( "local" , "newTabsLoadInBackground" ) ,
123
- } ) ;
124
- } else {
125
- throw new Error ( `URL is not included in the result` ) ;
126
- }
123
+ browser . tabs . sendMessage ( tab . id , {
124
+ type : "open-new-tab" ,
125
+ data_url : image_data_processed_dataurl ,
126
+ } ) ;
127
+
128
+ browser . tabs . sendMessage ( tab . id , { type : "google-post-end" } ) ;
127
129
}
128
130
129
131
browser . browserAction . onClicked . addListener ( function ( ) {
0 commit comments