MCPcopy
hub / github.com/fish2018/pansou / searchPage

Method searchPage

plugin/fox4k/fox4k.go:341–466  ·  view source on GitHub ↗

searchPage 搜索指定页面

(client *http.Client, encodedKeyword string, page int)

Source from the content-addressed store, hash-verified

339
340// searchPage 搜索指定页面
341func (p *Fox4kPlugin) searchPage(client *http.Client, encodedKeyword string, page int) ([]model.SearchResult, int, error) {
342 debugPrintf("🔧 [Fox4k DEBUG] searchPage 开始 - 第%d页, keyword: %s\n", page, encodedKeyword)
343
344 // 1. 构建搜索URL
345 var searchURL string
346 if page == 1 {
347 searchURL = fmt.Sprintf(SearchURL, encodedKeyword)
348 } else {
349 searchURL = fmt.Sprintf(SearchPageURL, encodedKeyword, page)
350 }
351
352 debugPrintf("🔧 [Fox4k DEBUG] 构建的URL: %s\n", searchURL)
353
354 // 2. 创建带超时的上下文
355 ctx, cancel := context.WithTimeout(context.Background(), DefaultTimeout)
356 defer cancel()
357
358 // 3. 创建请求
359 req, err := http.NewRequestWithContext(ctx, "GET", searchURL, nil)
360 if err != nil {
361 return nil, 0, fmt.Errorf("[%s] 创建请求失败: %w", p.Name(), err)
362 }
363
364 // 4. 设置完整的请求头(包含随机UA和IP)
365 randomUA := getRandomUA()
366 randomIP := generateRandomIP()
367
368 req.Header.Set("User-Agent", randomUA)
369 req.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
370 req.Header.Set("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8")
371 req.Header.Set("Connection", "keep-alive")
372 req.Header.Set("Upgrade-Insecure-Requests", "1")
373 req.Header.Set("Cache-Control", "max-age=0")
374 req.Header.Set("Referer", BaseURL+"/")
375 req.Header.Set("X-Forwarded-For", randomIP)
376 req.Header.Set("X-Real-IP", randomIP)
377 req.Header.Set("sec-ch-ua-platform", "macOS")
378
379 debugPrintf("🔧 [Fox4k DEBUG] 使用随机UA: %s\n", randomUA)
380 debugPrintf("🔧 [Fox4k DEBUG] 使用随机IP: %s\n", randomIP)
381
382 // 5. 发送HTTP请求
383 debugPrintf("🔧 [Fox4k DEBUG] 开始发送HTTP请求到: %s\n", searchURL)
384 debugPrintf("🔧 [Fox4k DEBUG] 请求头信息:\n")
385 if DebugMode {
386 for key, values := range req.Header {
387 for _, value := range values {
388 debugPrintf(" %s: %s\n", key, value)
389 }
390 }
391 }
392
393 startTime := time.Now()
394 resp, err := p.doRequestWithRetry(req, client)
395 requestDuration := time.Since(startTime)
396
397 if err != nil {
398 debugPrintf("❌ [Fox4k DEBUG] HTTP请求失败 (耗时: %v): %v\n", requestDuration, err)

Callers 1

searchImplMethod · 0.95

Calls 9

doRequestWithRetryMethod · 0.95
parseTotalPagesMethod · 0.95
parseSearchResultItemMethod · 0.95
debugPrintfFunction · 0.85
getRandomUAFunction · 0.70
generateRandomIPFunction · 0.70
NameMethod · 0.65
SetMethod · 0.45
CloseMethod · 0.45

Tested by

no test coverage detected