Add detailed headers and error handling to query requests
Expanded request headers to better mimic browser requests and improve compatibility with DeepL. Added specific handling for HTTP 429 rate limit errors and enhanced general error reporting for non-200 responses.
This commit is contained in:
1 parent
e1c60d67db
commit
4b6b2dc2ed
1 file changed
+38
@@ -325,6 +325,18 @@ async function query(
|
||||
const response = await fetch(endpoint, {
|
||||
headers: {
|
||||
"Content-Type": "application/json; charset=utf-8",
|
||||
Accept: "*/*",
|
||||
"Accept-Language": "en-US,en;q=0.9",
|
||||
"Accept-Encoding": "gzip, deflate, br",
|
||||
"Cache-Control": "no-cache",
|
||||
Origin: "https://www.deepl.com",
|
||||
Connection: "keep-alive",
|
||||
Referer: "https://www.deepl.com/",
|
||||
"Sec-Fetch-Dest": "empty",
|
||||
"Sec-Fetch-Mode": "cors",
|
||||
"Sec-Fetch-Site": "same-site",
|
||||
"User-Agent":
|
||||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0",
|
||||
...fingerprint,
|
||||
...config?.customHeader,
|
||||
},
|
||||
@@ -340,6 +352,32 @@ async function query(
|
||||
console.error(`400 error received. Request body was:`, requestBody);
|
||||
}
|
||||
|
||||
// Check for rate limit error specifically
|
||||
if (!response.ok && response.status === 429) {
|
||||
const error = new Error(
|
||||
"Too many requests, your IP has been blocked by DeepL temporarily, please don't request it frequently in a short time"
|
||||
);
|
||||
(error as any).status = 429;
|
||||
throw error;
|
||||
}
|
||||
|
||||
// Check for other error status codes (general non-200 check)
|
||||
if (!response.ok) {
|
||||
let errorMessage = `Request failed with status code: ${response.status}`;
|
||||
try {
|
||||
const errorText = await response.text();
|
||||
if (errorText) {
|
||||
errorMessage += ` - ${errorText}`;
|
||||
}
|
||||
} catch {
|
||||
// Ignore error when reading response body
|
||||
}
|
||||
|
||||
const error = new Error(errorMessage);
|
||||
(error as any).status = response.status;
|
||||
throw error;
|
||||
}
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
clearTimeout(timeoutId);
|
||||
|
||||
Reference in new issue
Block a user