网络爬虫合法采集

208 阅读2分钟

代理IP给网络爬虫带来了很多便利,越来越多的网络工作者选择使用代理IP来提高网络爬虫的效率。HTTP代理可以从代理服务提供商那里购买,也可以在网络上找到免费的代理IP,可以根据自己的需求去选择购买。

网络爬虫如果想要获取到网站上的数据,就必须使用爬虫代理IP。那网络爬虫什么信息可以采集,采集了什么信息就是违法。我相信每一个爬虫工作者在抓取信息之前都会做好功课,确定哪些信息是不能随便抓取的,并保持一个底线。

由于互联网的发展,人们的生活离不开互联网。互联网作为信息的聚集场所,容易造成数据泄露。本应严密保护的个人信息变得脆弱,可以随便采集。爬虫非法采集的信息,采集的个人隐私信息,使当事人受到了不可挽留的损失。无论是个人还是公司还是法律都不允许这样做。

互联网的使用越来越广泛,接收到的信息也越来越复杂多样。很多互联网公司的网络爬虫工作者,了解用户喜好,进行有针对性的精准营销。但无论是个人需求还是工作需求,做网络爬虫采集都不能违法,就是在不损害他人利益的情况下获取自己的信息。当然网络爬虫用户在选择爬虫代理IP的时候,一定要选择安全,稳定的商家,正规的爬虫代理公司去合作。然后使用亿牛云爬虫代理加强版代理IP去采集安全可靠不违法的数据信息。

        package main

        import (
            "net/url"
            "net/http"
            "bytes"
            "fmt"
            "io/ioutil"
        )

        // 代理服务器(产品官网 www.16yun.cn)
        const ProxyServer = "t.16yun.cn:31111"

        type ProxyAuth struct {
            Username string
            Password string
        }

        func (p ProxyAuth) ProxyClient() http.Client {

            var proxyURL *url.URL
            if p.Username != ""&& p.Password!="" {
                proxyURL, _ = url.Parse("http://" + p.Username + ":" + p.Password + "@" + ProxyServer)
            }else{
                proxyURL, _ = url.Parse("http://" + ProxyServer)
            }
            return http.Client{Transport: &http.Transport{Proxy:http.ProxyURL(proxyURL)}}
        }

        func main()  {


            targetURI := "https://httpbin.org/ip"


            // 初始化 proxy http client
            client := ProxyAuth{"username",  "password"}.ProxyClient()

            request, _ := http.NewRequest("GET", targetURI, bytes.NewBuffer([] byte(``)))

            // 设置Proxy-Tunnel
            // rand.Seed(time.Now().UnixNano())
            // tunnel := rand.Intn(10000)
            // request.Header.Set("Proxy-Tunnel", strconv.Itoa(tunnel) )

            response, err := client.Do(request)

            if err != nil {
                panic("failed to connect: " + err.Error())
            } else {
                bodyByte, err := ioutil.ReadAll(response.Body)
                if err != nil {
                    fmt.Println("读取 Body 时出错", err)
                    return
                }
                response.Body.Close()

                body := string(bodyByte)

                fmt.Println("Response Status:", response.Status)
                fmt.Println("Response Header:", response.Header)
                fmt.Println("Response Body:\n", body)
            }
        }