博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爬虫IP代理池
阅读量:4293 次
发布时间:2019-05-27

本文共 1245 字,大约阅读时间需要 4 分钟。

对于爬虫来说,由于爬虫爬取速度过快,在爬取过程中可能遇到同一个IP访问过于频繁的问题,此时网站就会让我们输入验证码登录或者直接封锁IP,这样会给爬取带来极大的不便。

使用代理隐藏真实的IP,让服务器误以为是代理服务器在请求自己。这样在爬取过程中通过不断更换代理,就不会被封锁,可以达到很好的爬取效果。

1. 免费代理

免费代理大多数情况下都是不好用的,所以比较靠谱的方法是购买付费代理。

1.1 开源项目 proxy_pool

1.1.1 安装和启动

docker pull jhao104/proxy_pool#依赖redis, 所以要先安装 redisdocker run -d --name redis -p 6379:6379 redis:latest  --requirepass "123456"docker run --env DB_CONN=redis://:123456@172.17.0.1:6379/1 -p 5010:5010 --name proxy_pool jhao104/proxy_pool:latest

1.1.2 使用

docker 启动后, 通过访问本地的接口, 就可以得到 ip

http://127.0.0.1:5010/get/

或者用作者给出的测试地址: 

2. 付费代理

2.1 芝麻代理

  • 生成 API 链接

  • 调用 API 获取 IP 和端口(如果提示加入白名单, 用文档里的接口即可)

3. 代码

3.1 golang

package mainimport (   "fmt"   "io/ioutil"   "log"   "net/http"   "net/url"   "time")func main() {  proxy, err := url.Parse("http://代理ip:代理端口")   if err != nil {      log.Fatal(err)   }   httpClient := &http.Client{      Timeout: time.Second * 10,      Transport: &http.Transport{         Proxy: http.ProxyURL(proxy),      },   }   res, err := httpClient.Get("https://www.baidu.com")   if err != nil {      log.Println(err)      return   }   defer res.Body.Close()   if res.StatusCode != http.StatusOK {      log.Println(err)      return   }   c, _ := ioutil.ReadAll(res.Body)   fmt.Println(string(c))}

4. 参考资料

转载地址:http://kzyws.baihongyu.com/

你可能感兴趣的文章
iOS最佳实践
查看>>
使用CFStringTransform将汉字转换为拼音
查看>>
更轻量的 View Controllers
查看>>
Chisel-LLDB命令插件,让调试更Easy
查看>>
时间格式化hh:mm:ss和HH:mm:ss区别
查看>>
When to use Delegation, Notification, or Observation in iOS
查看>>
Objective-C Autorelease Pool 的实现原理
查看>>
编程语言大牛王垠:编程的智慧,带你少走弯路
查看>>
ios指令集以及基于指令集的app包压缩策略
查看>>
iOS开发者的福利 — — iOS9+Xcode7免越狱免证书直接调试
查看>>
3、JavaWeb学习之基础篇—JSP
查看>>
4、JavaWeb学习之基础篇—Session
查看>>
5、JavaWeb学习之基础篇—标签(自定义&JSTL)
查看>>
8、JavaWEB学习之基础篇—文件上传&下载
查看>>
reRender属性的使用
查看>>
href="javascript:void(0)"
查看>>
h:panelGrid、h:panelGroup标签学习
查看>>
f:facet标签 的用法
查看>>
<h:panelgroup>相当于span元素
查看>>
java中append()的方法
查看>>