2KB项目,专业的源码交易网站 帮助 收藏 每日签到

自建代理ip池教程

  • 时间:2019-07-16 17:29 编辑: 来源:2KB项目 阅读:573
  • 扫一扫,手机访问
  • 分享
摘要:国外的开源项目,我是从某网站的评论信息里找到的,下面操作均是基于该网站:https://raw.githubusercontent.com/fate0/proxylist/master/proxy.list头信息和全局变量:importjsonimporttelnetlibimportrequestsproxy_url='https://r

1.jpg

国外的开源项目,我是从某网站的评论信息里找到的,下面操作均是基于该网站:https://raw.githubusercontent.com/fate0/proxylist/master/proxy.list
头信息和全局变量:

import json
import telnetlib
import requests 
proxy_url = 'https://raw.githubusercontent.com/fate0/proxylist/master/proxy.list'

获取代理的json信息

先打开:https://raw.githubusercontent.com/fate0/proxylist/master/proxy.list ,如果打不开的话请等下再试,如下图所示:

1.png

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


response = requests.get(proxy_url)
    proxies_list = response.text.split('
')
    
for proxy_str in proxies_list:
proxy_json = json.loads(proxy_str)
host = proxy_json['host']
port = proxy_json['port']
type = proxy_json['type']


验证代理ip是否有效

可以选择在requests请求一个特定的网页,参考相应参数判断是否(200)有效。也可以用telnetlib 库里的Telnet来判断是否成功。如果遇到不成功的ip,需要等待10秒。当然你也可以更改timeout的值,但如果你改的越小,你的ip池就越小。


import telnetlib
def verify(ip,port,type):
proxies = {}
    try:
        telnet = telnetlib.Telnet(ip,port=port,timeout=10)
    except:
        print('unconnected')
    else:
        print('connected successfully')
        proxies['type'] = type
        proxies['host'] = ip
        proxies['port'] = port


建立代理ip池

建立代理ip池有两种思路,一种是动态ip池,一种是固定ip池


动态的是多线程操作:

主线程爬取,另一个线程来获取代理ip。

注意,代理ip的线程需要先运行,然后主线程爬取的时候才可以挂上proxy。

在这里不介绍这一种,因为一遍爬取,一遍验证是非常慢的,如果遇到不成功的ip,需要等待10秒。

可能你会误以为爬虫死掉。


建立固定IP池:

首先是你要对你的地址足够有信心,也可以频繁的更新ip池来保证有效性。好处是在调用的时候比较方便,而且该网站会不间断的连接失败,可能是访问人数太多,但里面的代理信息不是很容易荡掉,所以我更倾向于保存到json文件里。将代理ip的信息,type,host,port保存到字典里,再用json.dumps()方法将字典改为json数据,方便调用。


with open('verified_proxies.json','a+') as f:
        f.write(proxiesJson + '
')
    print("已写入:%s" % proxies)


总代码:

import json
import telnetlib
import requests
import random
proxy_url = 'https://raw.githubusercontent.com/fate0/proxylist/master/proxy.list'
# proxyList = []
def verify(ip,port,type):
    proxies = {}
    try:
        telnet = telnetlib.Telnet(ip,port=port,timeout=3)
    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)
        with open('verified_proxies.json','a+') as f:
            f.write(proxiesJson + '
')
        print("已写入:%s" % proxies)
def getProxy(proxy_url):
    response = requests.get(proxy_url)
    proxies_list = response.text.split('
')
    for proxy_str in proxies_list:
        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)


运行效果,将严重成功的写入文件,结果可在当前路径下查看verified_json.json文件:


requests代理ip配置

这里测试用到一个网站:http://ip.2kb.com,这个网站会返回当前请求的ip地址,来测试代理ip是否配置成功。


import requests
url = 'http://ip.2kb.com'
proxy = {
    "http":"135.124.238.129:2128",
}
response = requests.get(url,proxies=proxy)
print(response.text)


运行结果为:135.124.238.129



2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部