zoukankan      html  css  js  c++  java
  • [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里设置规则。

  • 相关阅读:
    对象的创建过程以及super关键字的使用
    Java语言基础
    数据结构-思考总结
    ssh简化登录
    WebStorm设置eslint保存自动格式化
    Jmeter简单使用
    nodemon添加babel支持
    VueCli 添加自定义组件报错
    shell写一个压测脚本
    Vue v-for指令中 key 的必要性
  • 原文地址:https://www.cnblogs.com/kirai/p/5752446.html
Copyright © 2011-2022 走看看