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

  由于爬虫过于频繁访问某一个网站而被禁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里设置规则。

原文地址:https://www.cnblogs.com/kirai/p/5752446.html