游戏代理ip怎么设置_怎么自己搭建免费代理IP池

目前大数据是热门话题,大数据的基础就是数据源。要做大数据分析,需要采集大量的数据。采集数据需要用到爬虫。

我们在使用爬虫时,目标站往往会对访问过于频繁的IP进行封禁。这时我们就需要使用代理IP,进行反反爬。

这里酷鱼代理IP也提醒大家:在做爬虫项目时,不要恶意爬取,影响到目标站正常运行,更不能爬取用户隐私信息。

接下来,我们分步骤来看,怎么搭建自己的免费代理IP。

1、代理数据源

基于该网站: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'

2、获取代理的json信息

打开:https://raw.githubusercontent.com/fate0/proxylist/master/proxy.list ,如果你打不开的话请等下再试,毕竟是个开源的项目,访问人数很多,也有可能是被墙了。如下图所示:

f0a67551d405641a8ee81db669b9420f.png

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

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

3、验证代理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

4、建立代理ip池

建立代理ip池有两种思路,一种是动态的,一种是固定的。动态的是多线程操作:主线程爬取,另一个线程来获取代理ip。注意,代理ip的线程需要先运行,然后主线程爬取的时候才可以挂上proxy。在这里不介绍这一种,因为一遍爬取,一遍验证是非常慢的,如果遇到不成功的ip,需要等待10秒。可能你会误以为爬虫死掉。

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

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

5、总代码

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 + 'n')
        print("已写入:%s" % proxies)

def getProxy(proxy_url):
    response = requests.get(proxy_url)
    proxies_list = response.text.split('n')
    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)

6、运行效果

将成功的写入文件,结果可在当前路径下查看verified_json.json文件

ba6db47fa566c9446da0ee17c85e95bb.png

7、requests代理ip配置

测试代理是否成功可以访问这个网站:http://icanhazip.com,这个网站会返回当前请求的ip地址,来测试代理ip是否配置成功。

import requests
url = 'http://icanhazip.com'

proxy = {
    "http":"35.224.248.29:3128",
}

response = requests.get(url,proxies=proxy)
print(response.text)

酷鱼代理IP https://kuyukuyu.com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值