go - 向 Https 站点发送请求
问题描述
本质上,通过 goLang 我试图在 https 站点上发送请求以检查站点上是否存在项目。我试图尝试向主站点发出请求,但一直被拒绝访问,需要一种方法来解决这个问题,我试图从正文中获取信息以将其分开并找到正确的 ID 以检查是否有东西网站。
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://www.jdsports.co.uk/"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
}
解决方案
稍作测试后,该特定网站似乎正在使用 Akamai Ghost,并且已配置为阻止默认的 go http 包用户代理。
默认用户代理似乎是Go-http-client/1.1
如果您更改用户代理
req.Header.Set("User-Agent", "my-client-app")
该请求将起作用。但是,有问题的网站似乎不希望以编程方式被抓取。也许你应该尊重他们的意愿。
推荐阅读
- debugging - 链接独立可执行文件时对“core:fmt::write”的未定义引用
- github - 我可以从 GitHub Dependabot 中排除目录吗?
- c - 从c中的二叉树中获取最小的三个数字
- xml - Xquery 中的嵌套循环会导致不匹配?和成语
- java - LWJGL: Buffer Memory Management
- pthreads - pthread_spin_lock() 和 pthread_spin_unlock() 函数的 glibc 实现是否有内存栅栏指令?
- c++ - 如何在 Gtk 条目中删除插入符号光标
- python - 为我的 NMT 模型创建一个 python 模块
- sql - SQL语句,检查其他行是否具有相同的值
- javascript - Pangram 代码 - 无法理解我编写的代码中的问题 - 总是返回 false