[Golang]使用自建代理访问指定网站

vincentX · · 2449 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

  由于爬虫过于频繁访问某一个网站而被禁ip,只因为贪恋一时爽快而忘记了使用代理,这大概是大多数爬虫初学者遇到的问题吧。但是有一些网站不只是爬虫需要访问,人也是需要访问的。这时候就需要使用代理服务器来访问了。然而我现在手头没有一个可用的代理池,却有一台云服务器。决定在云服务器上搭建代理。

用Golang写起来非常方便,一个字:爽。

package main

import (
	"net/http"
	log "github.com/Sirupsen/logrus"
	"io/ioutil"
	"io"
	"os"
)

func Handler(w http.ResponseWriter, r *http.Request) {
	res, err := http.DefaultClient.Do(r)
	defer res.Body.Close()
	if err != nil {	log.Panicln(err.Error()) }
	for k, v := range res.Header {
		for _, vv := range v {
			w.Header().Add(k, vv)
		}
	}
	for _, c := range res.Cookies() {
		w.Header().Add("Set-Cookie", c.Raw)
	}
	w.WriteHeader(res.StatusCode)
	result, err := ioutil.ReadAll(res.Body)
	if err != nil && err != io.EOF { log.Panicln(err.Error()) }
	w.Write(result)
}

func main() {
	http.HandleFunc("/", Handler)
	log.Infoln("Starting agent: ", os.Args[1])
	http.ListenAndServe(":"+os.Args[1], nil)
}

编译后上传到服务器上运行,同时在浏览器上设置制定网站使用代理。我使用的是chrome浏览器,所以可以用插件switchysharp里设置规则。


有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:vincentX

查看原文:[Golang]使用自建代理访问指定网站

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2449 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传