1 回答

TA貢獻1831條經驗 獲得超4個贊
您可以通過指定 HTTP User-Agent Header 來解決您的具體情況:
import (
"fmt"
"io"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://www.hetzner.com", nil)
if err != nil {
fmt.Println("Error while retrieving site", err)
}
req.Header.Set("User-Agent", "Golang_Spider_Bot/3.0")
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error while retrieving site", err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
fmt.Println("Eroor while reading response body", err)
}
fmt.Println("RESPONSE", string(body))
}
注意:許多其他主機會因為他們的一些安全規則而拒絕來自您的服務器的請求。一些想法:
空的或類似機器人的 User-Agent HTTP 標頭
您的 IP 地址所在的位置。例如,美國的在線商店不需要處理來自俄羅斯的請求。
供應商的自治系統或 CIDR。由于其居民的大量惡意活動,一些 ASN 完全被黑洞。
注 2:許多現代網站前面都有 DDoS 保護或 CDN 系統。如果 Cloudflare 保護您的目標網站,您的 HTTP 請求將被阻止,盡管狀態代碼為 200。要處理此問題,您需要構建能夠呈現基于 JavaScript 的網站并添加一些腳本來解析驗證碼的東西。
此外,如果您在短時間內檢查大量網站,您將被您的 DNS 服務器阻止,因為它們有一些內置速率限制。在這種情況下,您可能需要查看 massdns 或類似的解決方案。
- 1 回答
- 0 關注
- 168 瀏覽
添加回答
舉報