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