fix(browser-fetch): allow baidu source fallback
This commit is contained in:
@@ -227,6 +227,7 @@ browser_fetch:
|
|||||||
allowed_domains:
|
allowed_domains:
|
||||||
- zhuanlan.zhihu.com
|
- zhuanlan.zhihu.com
|
||||||
- zhihu.com
|
- zhihu.com
|
||||||
|
- baidu.com
|
||||||
trigger_status:
|
trigger_status:
|
||||||
- 403
|
- 403
|
||||||
- 429
|
- 429
|
||||||
|
|||||||
@@ -274,7 +274,7 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
BROWSER_FETCH_TOKEN: ${BROWSER_FETCH_TOKEN:-geo-browser-fetch-change-me}
|
BROWSER_FETCH_TOKEN: ${BROWSER_FETCH_TOKEN:-geo-browser-fetch-change-me}
|
||||||
BROWSER_FETCH_ALLOWED_DOMAINS: zhuanlan.zhihu.com,zhihu.com
|
BROWSER_FETCH_ALLOWED_DOMAINS: zhuanlan.zhihu.com,zhihu.com,baidu.com
|
||||||
BROWSER_FETCH_QUEUE_SIZE: 128
|
BROWSER_FETCH_QUEUE_SIZE: 128
|
||||||
BROWSER_FETCH_WORKER_CONCURRENCY: 2
|
BROWSER_FETCH_WORKER_CONCURRENCY: 2
|
||||||
BROWSER_FETCH_PER_DOMAIN_CONCURRENCY: 1
|
BROWSER_FETCH_PER_DOMAIN_CONCURRENCY: 1
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ spec:
|
|||||||
name: geo-rankly-app-secret
|
name: geo-rankly-app-secret
|
||||||
key: BROWSER_FETCH_TOKEN
|
key: BROWSER_FETCH_TOKEN
|
||||||
- name: BROWSER_FETCH_ALLOWED_DOMAINS
|
- name: BROWSER_FETCH_ALLOWED_DOMAINS
|
||||||
value: zhuanlan.zhihu.com,zhihu.com
|
value: zhuanlan.zhihu.com,zhihu.com,baidu.com
|
||||||
- name: BROWSER_FETCH_QUEUE_SIZE
|
- name: BROWSER_FETCH_QUEUE_SIZE
|
||||||
value: "128"
|
value: "128"
|
||||||
- name: BROWSER_FETCH_WORKER_CONCURRENCY
|
- name: BROWSER_FETCH_WORKER_CONCURRENCY
|
||||||
|
|||||||
@@ -184,6 +184,7 @@ browser_fetch:
|
|||||||
allowed_domains:
|
allowed_domains:
|
||||||
- zhuanlan.zhihu.com
|
- zhuanlan.zhihu.com
|
||||||
- zhihu.com
|
- zhihu.com
|
||||||
|
- baidu.com
|
||||||
trigger_status:
|
trigger_status:
|
||||||
- 403
|
- 403
|
||||||
- 429
|
- 429
|
||||||
|
|||||||
@@ -217,6 +217,7 @@ browser_fetch:
|
|||||||
allowed_domains:
|
allowed_domains:
|
||||||
- zhuanlan.zhihu.com
|
- zhuanlan.zhihu.com
|
||||||
- zhihu.com
|
- zhihu.com
|
||||||
|
- baidu.com
|
||||||
trigger_status:
|
trigger_status:
|
||||||
- 403
|
- 403
|
||||||
- 429
|
- 429
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ func (s *KnowledgeService) parseWebsiteKnowledge(ctx context.Context, rawURL str
|
|||||||
zap.Error(fallbackErr),
|
zap.Error(fallbackErr),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
return nil, classifySourceFetchError(rawURL, err)
|
return nil, classifySourceFetchError(rawURL, fmt.Errorf("%w; browser fetch fallback failed: %v", err, fallbackErr))
|
||||||
}
|
}
|
||||||
|
|
||||||
text := normalizeKnowledgeText(item.Content)
|
text := normalizeKnowledgeText(item.Content)
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
package app
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestBrowserFetchDomainAllowedMatchesSubdomain(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
if !browserFetchDomainAllowed("https://mbd.baidu.com/bh/m/detail/ar_10234112381636647949", []string{"baidu.com"}) {
|
||||||
|
t.Fatalf("expected baidu.com to allow mbd.baidu.com")
|
||||||
|
}
|
||||||
|
if browserFetchDomainAllowed("https://notbaidu.com/article", []string{"baidu.com"}) {
|
||||||
|
t.Fatalf("expected baidu.com not to allow notbaidu.com")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestClassifiedSourceFetchErrorIncludesBrowserFallbackFailure(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
err := classifySourceFetchError("https://mbd.baidu.com/article", fmt.Errorf(
|
||||||
|
"webpage parser failed: status=%d body=invalid link; browser fetch fallback failed: domain is not allowed",
|
||||||
|
http.StatusInternalServerError,
|
||||||
|
))
|
||||||
|
|
||||||
|
message := err.Error()
|
||||||
|
for _, expected := range []string{
|
||||||
|
"source website fetch restricted status=500",
|
||||||
|
"webpage parser failed",
|
||||||
|
"browser fetch fallback failed: domain is not allowed",
|
||||||
|
} {
|
||||||
|
if !strings.Contains(message, expected) {
|
||||||
|
t.Fatalf("classified error = %q, want %q", message, expected)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user