Golang爬取数据:代理替换IP方法

举报
沉默的代码 发表于 2026/02/06 10:00:31 2026/02/06
【摘要】 Golang爬虫仅用标准库即可高效运行。本文分两步演示:先实现无代理的百度首页抓取;再通过http.Transport配置HTTP代理,替换真实IP、降低封禁风险,保障隐私与稳定性。

Golang爬虫效率出众,且仅靠标准库就能实现。直接用真实IP爬取易被目标网站封禁,还会泄露自身隐私,配置HTTP代理可解决该问题——相当于让“中间人”代为发送请求,既掩盖真实IP,又降低被封风险。


2.jpg


第一步:无代理基础爬虫

核心功能:爬取百度首页HTML并打印到控制台,代码可直接运行。

Go

package main


import (

    "fmt"

    "io/ioutil"

    "net/http"

)


func main() {

    targetUrl := "https://www.baidu.com"

    // 发送GET请求

    resp, err := http.Get(targetUrl)

    if err != nil {

        fmt.Println("请求失败:", err)

        return

    }

    defer resp.Body.Close() // 防止资源泄露,必写


    // 读取并打印响应内容

    body, err := ioutil.ReadAll(resp.Body)

    if err != nil {

        fmt.Println("读取内容失败:", err)

        return

    }

    fmt.Println(string(body))

}


核心说明:

1.依赖Go标准库,无需额外安装包,go run 文件名.go即可运行。

2.defer resp.Body.Close()必须写,避免内存泄露。

3.运行成功后,控制台输出百度首页HTML代码。


第二步:添加HTTP代理

核心思路:通过http.Transport配置代理,传给http.Client,用自定义客户端发送请求。

Go

package main


import (

    "fmt"

    "io/ioutil"

    "net/http"

    "net/url"

)


func main() {

    targetUrl := "https://www.baidu.com"

    // 代理格式:带验证"http://用户名:密码@代理IP:端口",不带验证"http://代理IP:端口"

    proxyStr := "http://username:password@proxyserver:port"


    // 1. 解析代理地址

    proxyURL, err := url.Parse(proxyStr)

    if err != nil {

        fmt.Println("解析代理失败:", err)

        return

    }


    // 2. 配置带代理的传输对象

    transport := &http.Transport{Proxy: http.ProxyURL(proxyURL)}


    // 3. 创建自定义客户端(走代理)

    client := &http.Client{Transport: transport}


    // 4. 发送请求并读取内容

    req, _ := http.NewRequest("GET", targetUrl, nil)

    resp, err := client.Do(req)

    if err != nil {

        fmt.Println("代理请求失败:", err)

        return

    }

    defer resp.Body.Close()


    body, _ := ioutil.ReadAll(resp.Body)

    fmt.Println(string(body))

}


核心说明:

1.需替换proxyStr为有效代理地址才能正常运行。

2.自定义http.Client是实现代理的关键,替代了默认的http.Get()。

3.Go 1.16+版本中,ioutil.ReadAll()可替换为os.ReadAll()(需导入"os"包)。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。