@@ -99,45 +99,77 @@ pub async fn get_problem_async(problem_stat: StatWithStatus) -> Option<Problem>
99
99
pub fn get_problems ( ) -> Option < Problems > {
100
100
let headers = {
101
101
let mut h = reqwest:: header:: HeaderMap :: new ( ) ;
102
+ h. insert (
103
+ "Accept" ,
104
+ reqwest:: header:: HeaderValue :: from_static (
105
+ "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8" ,
106
+ ) ,
107
+ ) ;
108
+ h. insert (
109
+ "Accept-Encoding" ,
110
+ reqwest:: header:: HeaderValue :: from_static ( "gzip, deflate, br" ) ,
111
+ ) ;
112
+ h. insert (
113
+ "Accept-Language" ,
114
+ reqwest:: header:: HeaderValue :: from_static ( "zh-CN,en-US;q=0.7,en;q=0.3" ) ,
115
+ ) ;
116
+ h. insert (
117
+ "Connection" ,
118
+ reqwest:: header:: HeaderValue :: from_static ( "keep-alive" ) ,
119
+ ) ;
102
120
h. insert (
103
121
"User-Agent" ,
104
122
reqwest:: header:: HeaderValue :: from_static (
105
- "Mozilla/5.0 (X11; Linux x86_64 ; rv:123.0) Gecko/20100101 Firefox/123.0" ,
123
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64 ; rv:123.0) Gecko/20100101 Firefox/123.0" ,
106
124
) ,
107
125
) ;
108
126
h. insert (
109
- "Referer " ,
110
- reqwest:: header:: HeaderValue :: from_static ( PROBLEMS_URL ) ,
127
+ "Sec-Fetch-Dest " ,
128
+ reqwest:: header:: HeaderValue :: from_static ( "document" ) ,
111
129
) ;
112
130
h. insert (
113
- "Origin " ,
114
- reqwest:: header:: HeaderValue :: from_static ( PROBLEMS_URL ) ,
131
+ "Sec-Fetch-Mode " ,
132
+ reqwest:: header:: HeaderValue :: from_static ( "navigate" ) ,
115
133
) ;
116
134
h. insert (
117
- "Content-Type " ,
118
- reqwest:: header:: HeaderValue :: from_static ( "application/json " ) ,
135
+ "Sec-Fetch-Site " ,
136
+ reqwest:: header:: HeaderValue :: from_static ( "none " ) ,
119
137
) ;
120
138
h. insert (
121
- "Accept " ,
122
- reqwest:: header:: HeaderValue :: from_static ( "application/json " ) ,
139
+ "Sec-Fetch-User " ,
140
+ reqwest:: header:: HeaderValue :: from_static ( "?1 " ) ,
123
141
) ;
142
+ h. insert (
143
+ "Upgrade-Insecure-Requests" ,
144
+ reqwest:: header:: HeaderValue :: from_static ( "1" ) ,
145
+ ) ;
146
+
124
147
h. insert (
125
148
"Host" ,
126
- reqwest:: header:: HeaderValue :: from_static ( PROBLEMS_URL ) ,
149
+ reqwest:: header:: HeaderValue :: from_static ( "leetcode.com" ) ,
127
150
) ;
128
151
h. insert (
129
- "X-Requested-With" ,
130
- reqwest:: header:: HeaderValue :: from_static ( "XMLHttpRequest" ) ,
152
+ "Cookie" ,
153
+ reqwest:: header:: HeaderValue :: from_str (
154
+ & std:: env:: var ( "LEETCODE_COOKIE" )
155
+ . expect ( "Please set LEETCODE_COOKIE in .env file or environment" ) ,
156
+ )
157
+ . unwrap ( ) ,
131
158
) ;
132
159
h
133
160
} ;
134
161
let client = reqwest:: blocking:: Client :: builder ( )
135
- . default_headers ( headers)
162
+ . connection_verbose ( true )
163
+ . http2_prior_knowledge ( )
164
+ . gzip ( true )
136
165
. build ( )
137
166
. unwrap ( ) ;
138
- let res = client. get ( PROBLEMS_URL ) . send ( ) . unwrap ( ) . json ( ) ;
139
- println ! ( "{:?}" , res) ;
140
- res. unwrap ( )
167
+ let get = client. get ( PROBLEMS_URL ) . headers ( headers) ;
168
+ // println!("Get: {:?}", get);
169
+ let reponse = get. send ( ) . unwrap ( ) ;
170
+ // println!("Response: {:?}", reponse);
171
+ let result = reponse. json ( ) ;
172
+ result. unwrap ( )
141
173
}
142
174
143
175
#[ derive( Serialize , Deserialize ) ]
0 commit comments