golang爬取免费代理IP
golang爬取免费的代理IP,并验证代理IP是否可用
这里选择爬取西刺的免费代理Ip,并且只爬取了一页,爬取的时候不设置useAgent西刺不会给你数据,西刺也做反爬虫处理了,所以小心你的IP被封掉
代码:
package main import (
"fmt"
"github.com/PuerkitoBio/goquery"
"net/http"
"net/url"
"strings"
) var total, useful int = ,
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().Text()
port := context.Find("td").Eq().Text()
httpType := context.Find("td").Eq().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 := ; 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 == {
buf := make([]byte, )
n, _ := resp.Body.Read(buf)
reStr := string(buf[:n]) if reStr == "Hello World" { //验证代理有没有做手脚,可能给你返回一堆广告
useful++
fmt.Println(proxyIp)
} }
status <- i
}
西刺上的代理IP只有一部分可用,另外高匿IP可用于反爬虫,但是西刺中有的高匿IP是广告陷阱,所以获取代理IP后最好自己搭个服务器验证一下,自己的服务器可以看到请求的原IP,检查是否匿了
golang爬取免费代理IP的更多相关文章
- 极简代理IP爬取代码——Python爬取免费代理IP
这两日又捡起了许久不碰的爬虫知识,原因是亲友在朋友圈拉人投票,点进去一看发现不用登陆或注册,觉得并不复杂,就一时技痒搞一搞,看看自己的知识都忘到啥样了. 分析一看,其实就是个post请求,需要的信息都 ...
- 简单爬虫-爬取免费代理ip
环境:python3.6 主要用到模块:requests,PyQuery 代码比较简单,不做过多解释了 #!usr/bin/python # -*- coding: utf-8 -*- import ...
- PHP简单爬虫 爬取免费代理ip 一万条
目标站:http://www.xicidaili.com/ 代码: <?php require 'lib/phpQuery.php'; require 'lib/QueryList.php'; ...
- python爬取免费优质IP归属地查询接口
python爬取免费优质IP归属地查询接口 具体不表,我今天要做的工作就是: 需要将数据库中大量ip查询出起归属地 刚开始感觉好简单啊,毕竟只需要从百度找个免费接口然后来个python脚本跑一晚上就o ...
- 第二篇 - python爬取免费代理
代理的作用参考https://wenda.so.com/q/1361531401066511?src=140 免费代理很多,但也有很多不可用,所以我们可以用程序对其进行筛选.以能否访问百度为例. 1. ...
- Python 爬虫练习(一) 爬取国内代理ip
简单的正则表达式练习,爬取代理 ip. 仅爬取前三页,用正则匹配过滤出 ip 地址和 端口,分别作为key.value 存入 validip 字典. 如果要确定代理 ip 是否真的可用,还需要再对代理 ...
- C#多线程爬虫抓取免费代理IP
这里用到一个HTML解析辅助类:HtmlAgilityPack,如果没有网上找一个增加到库里,这个插件有很多版本,如果你开发环境是使用VS2005就2.0的类库,VS2010就使用4.0,以此类推.. ...
- vb.net 多线程爬虫抓取免费代理IP
Class Program Public Shared masterPorxyList As List(Of proxy) = New List(Of proxy)() Public Class pr ...
- 码农代理免费代理ip端口字段js加密破解
起因 之前挖过爬取免费代理ip的坑,一个比较帅的同事热心发我有免费代理ip的网站,遂研究了下:https://proxy.coderbusy.com/. 解密 因为之前爬过类似的网站有了些经验,大概知 ...
随机推荐
- django系列5.5--分组查询,聚合查询,F查询,Q查询,脚本中调用django环境
一.聚合查询 aggregate(*args, **args) 先引入需要的包,再使用聚合查询 #计算所有图书的平均价格 from django.db.models import Avg Book.o ...
- django系列5.1--ORM对数据库的操作
Django---ORM数据库操作(图书管理系统基本实例) 一.基本知识 MVC模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Mo ...
- WPF INotifyPropertyChanged 通过特性减少代码量
在很多地方需要用上INotifyPropertyChanged的接口,MVVM模式,List等集合都会用到. 通常我们使用 protected void OnChange(PropertyChange ...
- mysql 行转列 (结果集以坐标显示)
create table capacity( type int , numbers int , monthst INT ); select type, sum(case monthst when 1 ...
- jmeter—解决响应乱码问题
问题: 当响应数据或响应页面没有设置编码时,jmeter会按照jmeter.properties文件中,sampleresult.default.encoding 设置的格式解析默认ISO-88 ...
- su: Authentication failure 的解决方案
原因是:ubuntu默认不允许使用root登录,因此初始root账户是不能使用的,需要在普通账户下利用sudo权限修改root密码. 解决方案很简单:设置一个root密码就行了.注意是sudo 而不是 ...
- IDEA 引入外部jar包 pom 配置,防止打包失败
1. <!--添加外部依赖--> <dependency> <groupId>Ice</groupId> ...
- 读取Properties文件的六种方法
1.使用java.util.Properties类的load()方法 示例: InputStream in = new BufferedInputStream(new FileInputStream( ...
- P1273 有线电视网(树形dp)
P1273 有线电视网 题目描述 某收费有线电视网计划转播一场重要的足球比赛.他们的转播网和用户终端构成一棵树状结构,这棵树的根结点位于足球比赛的现场,树叶为各个用户终端,其他中转站为该树的内部节点. ...
- numpy.argmax()
numpy.argmax(a, axis=None, out=None) 返回沿轴axis最大值的索引 Parameters: a : array_like ...