go-创建HTTP/HTTPS IP池及如何使用

go有开源项目能够创建ip池,项目链接:ProxyPool

 

类似的开源项目原理相同,通过爬取免费代理网页的ip端口数据,将有效数据持久化或者内存化供自己使用

 

在这里,我总结一下使用ProxyPool的细节,方便大家快速进入开发。

一 

conf/app.ini 配置文件从哪来。

项目源代码中调用conf/app.ini文件,但是conf/下只有example_app.ini文件,所以在初次编译时会报错。

这里将example_app.ini拷贝一份并更名为app.ini即可

 

app.ini 文件快速使用

打开文件后,找到[database]选项,按照注释更改配置,其他选项默认即可。

[database]
; Either "mysql", "postgres" or "sqlite3", you can connect to TiDB with MySQL protocol
DB_TYPE = postgres //填写你要存储ip的数据库名,如MySql,Redis等
HOST = 127.0.0.1:5432 //数据库链接ip及端口
NAME = ProxyPool  //数据库表名
USER = postgres   //进入数据库的用户名
PASSWD =          //进入数据库的密码
; For "postgres" only, either "disable", "require" or "verify-full"
SSL_MODE = disable
; For "sqlite3" and "tidb", use absolute path when you start as service
PATH = data/ProxyPool.db  //日志存放位置

 

HTTPS如何爬取

go-创建HTTP/HTTPS IP池及如何使用_第1张图片

type1代表的是http

type2代表的是https

通过项目本身的源码运行后,发现并没有https的ip供自己使用。

便自己写了一个demo,专门用作https的爬取。

demo源码如下

func Xila() (result []*models.IP) {
	for i :=1; i <= 15;i++{
		pollURL,_ := goquery.NewDocument("http://www.xiladaili.com/https/"+strconv.Itoa(i)+"/")
		pollURL.Find(".fl-table").Find("tbody").Find("tr").Each(func(i int, selection *goquery.Selection) {
			ret,_:= selection.Find("td").Html()
			ipport := strings.Split(ret," ")
			IP := models.NewIP()
			IP.Data = ipport[0]
			IP.Type1 = "http"
			//IP.Type2 = "https"
			result = append(result, IP)
			clog.Info("[kxila] done")
		})
	}
	return
}

按照项目文档添加即可。

使用https有两个注意点。

1.禁用其他demo,只留xila,xila爬取的数据是按照type1存储的,但是使用时按照https使用。

2.https免费ip不稳定,持续访问某个页面几十秒后页面有响应。

 

如何使用代理ip访问网页

//输入代理ip及端口号
proxy, _ := url.Parse("http://"+ip)
	tr := &http.Transport{
		Proxy:           http.ProxyURL(proxy),
		TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
	}
	client := &http.Client{
		Transport: tr,
		Timeout:   time.Second * 3,//超时设置
	}
//由代理ip访问的页面被返回
	res, _ := client.Get(curl)
//使用goquery引用代理ip访问的页面
	doc, err := goquery.NewDocumentFromResponse(res)

这里的goquery只是我比较熟悉,所以使用,同学们可以替换为自己熟悉的爬虫框架。

甚至可以直接使用res进行操作。

 

到此,代理ip的获取及使用分享完毕。

你可能感兴趣的:(golang)