发布时间:2021-01-22 15:36:38
爬虫或采集软件配置好代理后,如何判断代理IP已经使用成功?你可以通过查询IP地址等网站寻求帮助,例如,使用代理IP搜索百度IP或访问ip138.这样的网站会获取HTTP请求的源IP,通过HTTP内容返回。所以,如果代理IP转发成功,目标网站返回的内容应该是代理IP地址。通常有以下几种情况:
1.通过代理ip直接转发
只要将返回的IP地址复制到百度IP或ip138进行检查,如果是爬虫服务器的IP地址,则表示代理IP转发失败,否则表示代理IP转发成功。
2.代理多次转发它
查询IP地址网站返回的内容既不是爬虫服务器的IP地址,也不是爬虫程序或采集软件直接使用的代理IP地址,而是被代理IP多次转发后最终请求IP地址的网站的代理IP地址。
3.代理自动转发
有些代理IP产品会根据爬虫或采集软件的每次HTTP请求自动分配不同的代理IP进行转发,每次查询得到的IP地址也会不一样,这样在数据采集过程中就可以突破目标网站的IP限制行为。需要注意的是,会有更复杂的情况。有些IP查询网站会根据cookie等信息直接缓存返回的内容。即使代理IP每次请求转发不同的IP,这样的IP查询网站也会返回重复的IP地址,造成代理IP自动转发失败的假象。以下演示示例如下:
封装
导入(
' net/url '
' net/http '
字节数
“fmt”
io/ioutil '
)
//代理服务器(产品官网feizhuip.com)
const Proxy server=' t ' :31111
类型ProxyAuth结构{
用户名字符串
密码字符串
}
func(p proxy auth)proxy client()http。客户{var proxyURL * url .统一资源定位器
用户名!=' p。密码!='' {
proxyURL,_=url .解析(' http://' p . Username ' : ' p . Password ' @ '代理服务器)
}else{
proxyURL,_=url .解析(' http://'代理服务器)
}
返回http .客户端{Transport: http .传输{Proxy:http .proxUrl(proxUrl)} }
}
func main() {
目标URi :=' https://httpbin。'组织/IP '
//初始化代理超文本传送协议(Hyper Text Transport Protocol的缩写)客户端
客户端:=代理身份验证{ '用户名','密码' } .ProxyClient()
请求,_ :=http .NewRequest('GET ',targetURI,字节NewBuffer([]字节(`))
//设置代理隧道
//兰德。种子(时间。现在()。UnixNano())
//隧道:=兰特.Intn(10000)
//请求。标头。设置('代理-隧道strconv .Itoa(隧道) )
响应,err :=客户端. Do(请求)
如果出错!=零{死机('未能连接: '错误错误())
} else {
bodyByte,err :=ioutil .ReadAll(响应。正文)
如果出错!=零{
fmt .Println('读取身体时出错,err)
返回
}
回应。正文。关闭()
body :=字符串(体字节)
fmt .Println('响应状态: ',响应。状态)
fmt .Println('响应头: ',响应。表头)
fmt .Println('响应正文:\n ',正文)
}
}
大客户
微信
置顶