golang爬取免費代理IP

golang爬取免費的代理IP,並驗證代理IP是否可用git

這裏選擇爬取西刺的免費代理Ip,而且只爬取了一頁,爬取的時候不設置useAgent西刺不會給你數據,西刺也作反爬蟲處理了,因此當心你的IP被封掉github

代碼:golang

package main

import (
    "fmt"
    "github.com/PuerkitoBio/goquery"
    "net/http"
    "net/url"
    "strings"
)

var total, useful int = 0, 0
var status = make(chan int)

func main() {

    xcurl := "http://www.xicidaili.com/wt/"
    request, _ := http.NewRequest("GET", xcurl, nil)
    request.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0")

    cli1 := &http.Client{}
    response, err := cli1.Do(request)
    if err != nil {
        fmt.Println(err)
    }

    dom, _ := goquery.NewDocumentFromResponse(response)

    dom.Find("#ip_list tbody tr").Each(func(i int, context *goquery.Selection) {
        ip := context.Find("td").Eq(1).Text()
        port := context.Find("td").Eq(2).Text()
        httpType := context.Find("td").Eq(5).Text()
        proxyIp := strings.ToLower(httpType) + "://" + ip + ":" + port
        // nim := context.Find("td").Eq(4).Text() //是不是高匿,高匿的能夠隱藏你的原始IP

        if ip != "" && port != "" {
            total++
            go checkProxyIP(proxyIp, i)
        }
    })

    for i := 0; i < total; i++ {
        <-status
    }
    fmt.Println("num=", total, "\nuseful=", useful)
    fmt.Println("END!")
}

func checkProxyIP(proxyIp string, i int) {
    req, _ := http.NewRequest("GET", "http://test.bestbing.cn/", nil) //這裏本身搭個web服務驗證代理是否可用
    proxy, _ := url.Parse(proxyIp)
    cli2 := &http.Client{
        Transport: &http.Transport{
            Proxy: http.ProxyURL(proxy),
        },
    }
    resp, _ := cli2.Do(req)

    if resp != nil && resp.StatusCode == 200 {
        buf := make([]byte, 1024)
        n, _ := resp.Body.Read(buf)
        reStr := string(buf[:n])

        if reStr == "Hello World" { //驗證代理有沒有作手腳,可能給你返回一堆廣告
            useful++
            fmt.Println(proxyIp)
        }

    }
    status <- i
}

西刺上的代理IP只有一部分可用,另外高匿IP可用於反爬蟲,可是西刺中有的高匿IP是廣告陷阱,因此獲取代理IP後最好本身搭個服務器驗證一下,本身的服務器能夠看到請求的原IP,檢查是否匿了web

相關文章
相關標籤/搜索