00x01--- 前言

因为爬虫被禁ip这样的反扒真的很凶,但自从建了一个代理ip池以后,反反扒就可以跟的上节奏。当然你也可以上网上各种代理平台自己付费。这些平台当然很方便提供api调用,还不用自己验证。但你不想付费的话,可以看看下面这个国外的开源项目,我是从某网站的评论信息里找到的,下面操作均是基于该网站:https://raw.githubusercontent.com/fate0/proxylist/master/proxy.list

00x02--- 获取代理的json信息

打开网站,不过需要墙,这是一个开源的项目

00x03 --- 分析

很明显每一行是一个json数据,但整个页面你拿到的也不过是字符串而已,每一行末都换行,也就是说每一行末都有"\n",那么思路很清晰,用requests获得整个页面的text(字符串),然后用split('\n') 将每一行分割之后组成的列表,便利这个列表用json.loads()方法,将每一行的字符串转换为json对象,最后取值。

00x04 --- 上代码

 #!/usr/bin/env python3
# coding:utf-8
#lanxing import json
import telnetlib
import requests
import random proxy_url = 'https://raw.githubusercontent.com/fate0/proxylist/master/proxy.list'
# proxyList = [] #定义函数,验证代理ip是否有效
def verify(ip,port,type):
proxies = {}
try:
telnet = telnetlib.Telnet(ip,port=port,timeout=3) #用这个ip请访问,3s自动断开,返回tiemout
except:
print('unconnected')
else:
#print('connected successfully')
# proxyList.append((ip + ':' + str(port),type))
proxies['type'] = type
proxies['host'] = ip
proxies['port'] = port
proxiesJson = json.dumps(proxies)
#保存到本地的proxies_ip.json文件
with open('proxies_ip.json','a+') as f:
f.write(proxiesJson + '\n')
print("已写入:%s" % proxies) #定义函数,带着url地址去获取数据
def getProxy(proxy_url):
response = requests.get(proxy_url)
#print(type(response))
# 用split('\n') 将每一行分割之后组成的列表,消除换行影响
proxies_list = response.text.split('\n')
for proxy_str in proxies_list:
# 用json.loads()方法,将每一行的字符串转换为json对象,最后取值
proxy_json = json.loads(proxy_str)
host = proxy_json['host']
port = proxy_json['port']
type = proxy_json['type']
verify(host,port,type) #主函数,入口
if __name__ == '__main__':
getProxy(proxy_url)

00x05 --- 效果图

参考文章:https://blog.csdn.net/qq_42776455/article/details/83047883

自建免费的代理ip池的更多相关文章

  1. 基于后端和爬虫创建的代理ip池

    搭建免费的代理ip池 需要解决的问题: 使用什么方式存储ip 文件存储 缺点: 打开文件修改文件操作较麻烦 mysql 缺点: 查询速度较慢 mongodb 缺点: 查询速度较慢. 没有查重功能 re ...

  2. 做了一个动态代理IP池项目,邀请大家免费测试~

    现在出来创业了,目前公司在深圳. 做了啥呢, 做了一个动态代理 IP 池项目 现在邀请大家免费测试体验! 免费激活码:关注微信公众号:2808proxy (每人每天限领一次噢~) 网站:https:/ ...

  3. 利用代理IP池(proxy pool)搭建免费ip代理和api

    先看这里!!!---->转载:Python爬虫代理IP池(proxy pool) WIIN10安装中遇到的问题: 一.先安装Microsoft Visual C++ Compiler for P ...

  4. 【python3】如何建立爬虫代理ip池

    一.为什么需要建立爬虫代理ip池 在众多的网站防爬措施中,有一种是根据ip的访问频率进行限制的,在某段时间内,当某个ip的访问量达到一定的阀值时,该ip会被拉黑.在一段时间内被禁止访问. 这种时候,可 ...

  5. Python爬虫代理IP池

    目录[-] 1.问题 2.代理池设计 3.代码模块 4.安装 5.使用 6.最后 在公司做分布式深网爬虫,搭建了一套稳定的代理池服务,为上千个爬虫提供有效的代理,保证各个爬虫拿到的都是对应网站有效的代 ...

  6. C#——做一个简单代理IP池

    一.缘由. 抓取数据时,有一些网站 设置了一些反爬虫设置,进而将自己本地 IP 地址拉入系统黑名单.从而达到禁止本地 IP 访问数据的请求. 二.思路. 根据其他 代理 IP 网站,进行一个免费的代理 ...

  7. 构建一个给爬虫使用的代理IP池

    做网络爬虫时,一般对代理IP的需求量比较大.因为在爬取网站信息的过程中,很多网站做了反爬虫策略,可能会对每个IP做频次控制.这样我们在爬取网站时就需要很多代理IP. 代理IP的获取,可以从以下几个途径 ...

  8. python爬虫构建代理ip池抓取数据库的示例代码

    爬虫的小伙伴,肯定经常遇到ip被封的情况,而现在网络上的代理ip免费的已经很难找了,那么现在就用python的requests库从爬取代理ip,创建一个ip代理池,以备使用. 本代码包括ip的爬取,检 ...

  9. 爬虫入门到放弃系列05:从程序模块设计到代理IP池

    前言 上篇文章吧啦吧啦讲了一些有的没的,现在还是回到主题写点技术相关的.本篇文章作为基础爬虫知识的最后一篇,将以爬虫程序的模块设计来完结. 在我漫(liang)长(nian)的爬虫开发生涯中,我通常将 ...

随机推荐

  1. WebApi 如何 优雅的 对 输入输出 解密加密

    原文:WebApi 如何 优雅的 对 输入输出 解密加密 这不是变态的想法, 这只是对现实需求的转化. 因为有密文, 所以本文不适用于浏览器到服务端的数据交换; 只适用于服务端到服务端的数据传输. 用 ...

  2. Read-Write lock 看可以,不过看的时候不能写

    当线程“读取”实例的状态时,实例的状态不会改变,只有线程对实例“写入”操作时才会改变.read-write lock 模式将读取和写入分开来处理,在读取数据前获取读锁定,而写入之前,必须获取写锁定. ...

  3. caffe安装 总结

    用的是matlab2018a,搞了一天 ubuntu 系统下的Caffe环境搭建 https://blog.csdn.net/hjimce/article/details/48781693 caffe ...

  4. 整理下webapi的一些琐碎事情

    在使用webapi的时候我们会遇到一些问题比如 1.POST怎么请求 2.怎么兼容JSONP请求 3.怎么给指定端提供跨域的请求 4.怎么显示单独的models层的注释 问题一二其他人都玩的比较成熟的 ...

  5. The linux command 之权限

    一.修改权限 只有文件主或者超级用户才可以修改文件或者目录的权限. 符号表示法分为三种: Who the change will affect Which operation will be perf ...

  6. Buy Low, Buy Lower

    Buy Low, Buy Lower 给出一个长度为N序列\(\{a_i\}\),询问最长的严格下降子序列,以及这样的序列的个数,\(1 <= N <= 5000\). 解 显然我们可以很 ...

  7. 【转载】99%的人都理解错了HTTP中GET与POST的区别

    作者:Larry链接:https://zhuanlan.zhihu.com/p/22536382来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 原文链接 作者:WebT ...

  8. JS调用C++

    1.注册C++函数. //注册回调函数宏 //根据不同需要支持注册两个函数原型,注意CONNECT_JS_CALL_SIMPLE_HANDLER中注册的函数 //需要提前和HTML调用协调好,参数必须 ...

  9. System.Web.Mvc.RoutePrefixAttribute.cs

    ylbtech-System.Web.Mvc.RoutePrefixAttribute.cs 1.程序集 System.Web.Mvc, Version=5.2.3.0, Culture=neutra ...

  10. 同步异步,异步回调,线程队列,线程时间Event

    同步异步-阻塞非阻塞 阻塞-非阻塞 指的是程序的运行状态 阻塞:当程序执行过程中遇到了IO操作,在执行IO操作时,程序无法继续执行其他代码,称为阻塞. 非阻塞:程序在正常运行没有遇到IO操作,或者通过 ...