轻量Golang爬虫:带HTTP代理实现

简介: 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"包)。

相关文章
|
8月前
|
数据采集 数据安全/隐私保护 Python
爬虫代理入门:为什么用、怎么用,一篇说透
爬虫代理是绕过IP封禁、绕过地域限制、提升并发效率与保障隐私的关键工具。新手推荐使用正规HTTP/HTTPS代理,通过requests库配置proxies参数即可快速集成,注意IP轮换、有效性验证及合规爬取。
|
缓存
KVCache原理简述
KVCache原理简述
946 0
|
移动开发 Dart 前端开发
AliFlutter - 面向阿里集团的Flutter体系化建设
阿里巴巴集团移动技术委员会联合淘系技术部重磅推出「AliFlutter系列直播」,文中可以报名哦!
7798 0
AliFlutter - 面向阿里集团的Flutter体系化建设
|
8月前
|
人工智能 Linux API
OpenClaw从入门到精通:新手必备技能清单、本地/云端部署与大模型接入及避坑指南
OpenClaw作为轻量化开源AI Agent平台,通过Skills系统实现能力模块化扩展,新手只需安装六大核心技能,即可快速打造全能AI助手。2026年全平台部署方案覆盖本地macOS/Linux/Windows11与阿里云环境,搭配阿里云千问与免费Coding Plan API,零成本即可实现稳定运行。遵循安全安装、循序渐进、技能组合的原则,可让OpenClaw成为日常工作与生活的高效辅助工具,真正实现AI能力自主可控、按需扩展。
1127 5
|
前端开发 JavaScript Java
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
682 17
|
机器学习/深度学习 人工智能 算法
基于深度学习的地面垃圾识别分类技术
AI垃圾分类系统结合深度学习和计算机视觉技术,实现高效、精准的垃圾识别与自动分类。系统集成高精度图像识别、多模态数据分析和实时处理技术,适用于市政环卫、垃圾处理厂和智能回收设备,显著提升管理效率,降低人工成本。
1807 1
基于深度学习的地面垃圾识别分类技术
|
网络架构 内存技术
OpenPose原理解析
Openpose论文原理总结
1333 0
Vue3头像(Avatar)
这是一个基于 Vue3 的头像组件库,提供了圆形和方形两种头像形状,并支持自定义大小、图片、图标及字符展示。
762 1
Vue3头像(Avatar)
|
安全 Docker 容器
漏洞扫描—Awvs&Nessus(Docker版V3.0​)更新
漏洞扫描—Awvs&Nessus(Docker版V3.0​)更新
漏洞扫描—Awvs&Nessus(Docker版V3.0​)更新
|
机器学习/深度学习 分布式计算 算法
大模型开发:你如何确定使用哪种机器学习算法?
在大型机器学习模型开发中,选择算法是关键。首先,明确问题类型(如回归、分类、聚类等)。其次,考虑数据规模、特征数量和类型、分布和结构,以判断适合的算法。再者,评估性能要求(准确性、速度、可解释性)和资源限制(计算资源、内存)。同时,利用领域知识和正则化来选择模型。最后,通过实验验证和模型比较进行优化。此过程涉及迭代和业务需求的技术权衡。
1178 2