github-actions[bot] commited on
Commit
bf38626
·
1 Parent(s): 9d2e866

Update from GitHub Actions

Browse files
Files changed (1) hide show
  1. src/index.ts +37 -31
src/index.ts CHANGED
@@ -69,14 +69,14 @@ async function getReCaptchaToken(page: Page): Promise<string> {
69
  return page.evaluate(() => {
70
  return new Promise<string>((resolve, reject) => {
71
  // @ts-ignore
72
- window.grecaptcha.ready(function () {
73
  // @ts-ignore
74
  grecaptcha.execute(
75
  RECAPTCHA_SITE_KEY,
76
  { action: 'copilot' },
77
- ).then(function (token: string) {
78
  resolve(token)
79
- }).catch(function (error: Error) {
80
  reject(error)
81
  });
82
  });
@@ -101,12 +101,12 @@ async function handleRequest(url: string, method: string, headers: any, body?: a
101
  'cf-ray', 'cf-visitor', 'cf-worker', 'x-direct-url',
102
  'x-forwarded-for', 'x-forwarded-port', 'x-forwarded-proto'
103
  ];
104
-
105
  headersToRemove.forEach(header => delete filteredHeaders[header]);
106
  filteredHeaders['user-agent'] = userAgent;
107
 
108
  console.log('处理请求:', method, url, filteredHeaders, body);
109
-
110
  // 设置请求拦截器
111
  await page.route('**/*', async (route: Route) => {
112
  const request = route.request();
@@ -128,7 +128,7 @@ async function handleRequest(url: string, method: string, headers: any, body?: a
128
  // 配置页面请求选项
129
  const response = await page.goto(url, {
130
  waitUntil: 'domcontentloaded', // 改为更快的加载策略
131
- timeout: 600000 // 60秒超时,更合理的值
132
  });
133
 
134
  if (!response) {
@@ -136,7 +136,7 @@ async function handleRequest(url: string, method: string, headers: any, body?: a
136
  }
137
 
138
  // 等待页面加载完成,使用更短的超时时间
139
- await page.waitForLoadState('networkidle', { timeout: 600000 }).catch(() => {
140
  console.log('等待页面加载超时,继续处理');
141
  });
142
 
@@ -182,11 +182,11 @@ function parseCookies(cookieString: string) {
182
  return cookieString.split(';')
183
  .map(cookie => {
184
  const [name, value] = cookie.trim().split('=');
185
- return {
186
- name,
187
- value,
188
- domain: 'www.genspark.ai',
189
- path: '/'
190
  };
191
  })
192
  .filter(cookie => cookie.name && cookie.value);
@@ -214,53 +214,59 @@ app.get('/genspark', async (c) => {
214
 
215
  let page = null;
216
  let error = null;
217
-
218
  try {
219
  gensparkContext = await initGensparkContext();
220
-
221
  // 设置cookies
222
  if (cookies.length > 0) {
223
  await gensparkContext.clearCookies();
224
  await gensparkContext.addCookies(cookies);
225
  }
226
- await new Promise(resolve => setTimeout(resolve, 300));
 
 
 
 
227
  page = await gensparkContext.newPage();
228
- await page.waitForTimeout(300);
229
  // 导航到Genspark页面
230
  await page.goto(GENSPARK_URL, {
231
  waitUntil: 'networkidle',
232
  timeout: 30000 // 30秒超时,更合理
233
  });
 
234
  // 等待页面加载完成
235
- await page.waitForTimeout(300);
 
236
  // 获取reCAPTCHA令牌
237
  const token = await getReCaptchaToken(page);
238
-
239
  if (!token) {
240
  return c.json({ code: 500, message: '获取令牌失败:令牌为空' });
241
  }
242
-
243
- return c.json({
244
- code: 200,
245
- message: '获取令牌成功',
246
- token: token
247
  });
248
  } catch (e) {
249
  error = e
250
  console.error('获取令牌失败:', e);
251
- return c.json({
252
- code: 500,
253
- message: `获取令牌失败: ${e instanceof Error ? e.message : '未知错误'}`
254
  });
255
  } finally {
256
  if (page) {
257
- await page.close().catch(() => { });
258
  }
259
-
260
  // 不要在每次请求后关闭上下文,保持它以便重用
261
  // 只有在出错时才重置上下文
262
  if (error && gensparkContext) {
263
- await gensparkContext.close().catch(() => { });
264
  gensparkContext = null;
265
  }
266
  }
@@ -304,12 +310,12 @@ app.all('*', async (c) => {
304
  // 清理函数
305
  async function cleanup() {
306
  if (gensparkContext) {
307
- await gensparkContext.close().catch(() => { });
308
  gensparkContext = null;
309
  }
310
 
311
  if (browser) {
312
- await browser.close().catch(() => { });
313
  browser = null;
314
  }
315
  process.exit(0)
 
69
  return page.evaluate(() => {
70
  return new Promise<string>((resolve, reject) => {
71
  // @ts-ignore
72
+ window.grecaptcha.ready(function() {
73
  // @ts-ignore
74
  grecaptcha.execute(
75
  RECAPTCHA_SITE_KEY,
76
  { action: 'copilot' },
77
+ ).then(function(token: string) {
78
  resolve(token)
79
+ }).catch(function(error: Error) {
80
  reject(error)
81
  });
82
  });
 
101
  'cf-ray', 'cf-visitor', 'cf-worker', 'x-direct-url',
102
  'x-forwarded-for', 'x-forwarded-port', 'x-forwarded-proto'
103
  ];
104
+
105
  headersToRemove.forEach(header => delete filteredHeaders[header]);
106
  filteredHeaders['user-agent'] = userAgent;
107
 
108
  console.log('处理请求:', method, url, filteredHeaders, body);
109
+
110
  // 设置请求拦截器
111
  await page.route('**/*', async (route: Route) => {
112
  const request = route.request();
 
128
  // 配置页面请求选项
129
  const response = await page.goto(url, {
130
  waitUntil: 'domcontentloaded', // 改为更快的加载策略
131
+ timeout: 60000 // 60秒超时,更合理的值
132
  });
133
 
134
  if (!response) {
 
136
  }
137
 
138
  // 等待页面加载完成,使用更短的超时时间
139
+ await page.waitForLoadState('networkidle', { timeout: 5000 }).catch(() => {
140
  console.log('等待页面加载超时,继续处理');
141
  });
142
 
 
182
  return cookieString.split(';')
183
  .map(cookie => {
184
  const [name, value] = cookie.trim().split('=');
185
+ return {
186
+ name,
187
+ value,
188
+ domain: 'www.genspark.ai',
189
+ path: '/'
190
  };
191
  })
192
  .filter(cookie => cookie.name && cookie.value);
 
214
 
215
  let page = null;
216
  let error = null;
217
+
218
  try {
219
  gensparkContext = await initGensparkContext();
220
+
221
  // 设置cookies
222
  if (cookies.length > 0) {
223
  await gensparkContext.clearCookies();
224
  await gensparkContext.addCookies(cookies);
225
  }
226
+
227
+
228
+ //等待一段时间
229
+ await new Promise((resolve) => setTimeout(resolve, 1000));
230
+
231
  page = await gensparkContext.newPage();
232
+
233
  // 导航到Genspark页面
234
  await page.goto(GENSPARK_URL, {
235
  waitUntil: 'networkidle',
236
  timeout: 30000 // 30秒超时,更合理
237
  });
238
+
239
  // 等待页面加载完成
240
+ await page.waitForTimeout(1000);
241
+
242
  // 获取reCAPTCHA令牌
243
  const token = await getReCaptchaToken(page);
244
+
245
  if (!token) {
246
  return c.json({ code: 500, message: '获取令牌失败:令牌为空' });
247
  }
248
+
249
+ return c.json({
250
+ code: 200,
251
+ message: '获取令牌成功',
252
+ token: token
253
  });
254
  } catch (e) {
255
  error = e
256
  console.error('获取令牌失败:', e);
257
+ return c.json({
258
+ code: 500,
259
+ message: `获取令牌失败: ${e instanceof Error ? e.message : '未知错误'}`
260
  });
261
  } finally {
262
  if (page) {
263
+ await page.close().catch(() => {});
264
  }
265
+
266
  // 不要在每次请求后关闭上下文,保持它以便重用
267
  // 只有在出错时才重置上下文
268
  if (error && gensparkContext) {
269
+ await gensparkContext.close().catch(() => {});
270
  gensparkContext = null;
271
  }
272
  }
 
310
  // 清理函数
311
  async function cleanup() {
312
  if (gensparkContext) {
313
+ await gensparkContext.close().catch(() => {});
314
  gensparkContext = null;
315
  }
316
 
317
  if (browser) {
318
+ await browser.close().catch(() => {});
319
  browser = null;
320
  }
321
  process.exit(0)