免费ip代理池创建[通俗易懂]

免费ip代理池创建[通俗易懂]反爬技术越来越成熟,为了爬取目标数据,必须对爬虫的请求进行伪装,骗过目标系统,目标系统通过判断请求的访问频次或请求参数将疑似爬虫的ip进行封禁,要求进行安全验证,通过python的第三方库faker可以随机生成header伪装请求头,并且减缓爬虫的爬取速度,能很好的避过多数目标系统的反扒机制,但对一些安全等级较高的系统,也有极大的可能ip被封禁,当ip被封禁后,通过更换代理ip便可以继续爬取,所以具有一个有效的ip代理池是非常重要的,网上有很多动态ip代理提供商,但如果能有一个自己免费的ip代…

大家好,又见面了,我是你们的朋友全栈君。

       反爬技术越来越成熟,为了爬取目标数据,必须对爬虫的请求进行伪装,骗过目标系统,目标系统通过判断请求的访问频次或请求参数将疑似爬虫的ip进行封禁,要求进行安全验证,通过python的第三方库faker可以随机生成header伪装请求头,并且减缓爬虫的爬取速度,能很好的避过多数目标系统的反扒机制,但对一些安全等级较高的系统,也有极大的可能ip被封禁,当ip被封禁后,通过更换代理ip便可以继续爬取,所以具有一个有效的ip代理池是非常重要的,网上有很多动态ip代理提供商,但如果能有一个自己免费的ip代理池也是不错的选择。关注微信公众号【菜鸟阿都】并回复:ip池,可获得源码。

ip代理池开发思路:

1.通过爬虫技术爬取互联网上免费的ip

2.通过校验,将有效的ip保存

免费ip代理商:

ip提供商 url
快代理 https://www.kuaidaili.com/free/inha
89免费代理 https://www.89ip.cn/index_1.html
高可用全球免费代理ip库 https://ip.jiangxianli.com/
66代理 http://www.66ip.cn/2.html

   封装请求方法,当请求失败后,会停留3秒再次发起请求,总共请求3次,使用faker库,随机生成请求头

# get请求:链接异常后,会多次进行链接尝试
def GetConnect(url):
    i=0
    while i<3:
        try:
            headers= {'User-Agent':str(UserAgent().random)}
            response=requests.get(url,headers=headers,timeout=5)
            if(response.status_code==200):
                return response
        except requests.exceptions.RequestException as e:
            time.sleep(3)
            i+=1

      获取网页提供的ip,总共爬取上述5个提供商提供的免费ip,页面数据为表格,所以通过xpath定位表格爬取数据

def getDate():
    for i in range(0,len(urlNode)):
        for j in range(1,10):n
            url=urlNode[i].replace('@',str(j))
            print(url)
            response=GetConnect(url)
            content=response.text
            html=etree.HTML(content)
            tr=html.xpath('//tr')
            for j in range(1,len(tr)+1):
                ip=html.xpath('//tr['+str(j)+']/td[1]/text()')
                port=html.xpath('//tr['+str(j)+']/td[2]/text()')
                ipType=html.xpath('//tr['+str(j)+']/td[4]/text()')
                # 66ip第一行为表头
                if len(ip)>1:
                    continue
                if len(ipType)==0 or not ipType[0].isalpha():
                    ipType='HTTP'
                else:
                    ipType=ipType[0]
                if len(ip)!=0 and len(port)!=0:
                    checkIp(wash(ip[0])+':'+wash(port[0]),wash(ipType))

     通过ip代理请求,访问icanhazip网址校验ip的有效性

# 校验ip有效性
def checkIp(ip,ipType):
    url='http://icanhazip.com/'
    try:
        headers= {'User-Agent':str(UserAgent().random)}
        proxy = {
          ipType.lower():ipType.lower()+'://'+ip
        }
        response=requests.get(url,headers=headers,proxies=proxy,timeout=5)
        if(response.status_code==200):
            # 有效ip
            write(ip,ipType)
    except Exception as e:
        # 无效
       

      将有效的ip写入文件,以供爬虫使用 

def write(ip,ipType):
    with open("ip池.txt", "a", encoding="utf-8") as f:
        f.write(wash(ip)+' '+wash(ipType)+'\n')

 

 

关注微信公众号【菜鸟阿都】并回复:ip池 ,获得源码.

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/136570.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • potplayer怎么设置清晰度_potplayer输出分辨率设置

    potplayer怎么设置清晰度_potplayer输出分辨率设置今天因为要看视频,所以用到了播放器,之前就下载过potplayer和kmplayer这两个播放器,一开始发现kmp的清晰度明显高于potplayer播放器,但随之发现kmplayer有几个缺点①在使用倍速播放的过程中有频繁的卡顿现象②设置较为繁琐③网上的教程不多,维护的人少(这两个软件作者相同,potplayer是作者跳槽之后开发的版本)。 所以还是准备使用potplayer,…

  • SQL Server 2019基础配置

    SQL Server 2019基础配置SQLServer2019基础配置1、在开始菜单中选中安装的SQLServer2019配置管理器,打开。2、点击SQLServer网络配置->MSSQLSERVER的协议->启用TCP/IP协议。示例:3、启动管理应用。示例:4、默认直接点击连接即可。示例:5、发现有如图所示的结果表示连接成功。示例:6、单击->右键->属性。示例:7…

  • ansi unicode_ansi unicode utf-8

    ansi unicode_ansi unicode utf-8利用今天一天的时间,研究了一下ANSI编码和Unicode编码的不同,下面把我的研究成果写下来,以备日后参考。       ANSI编码最常见的应用就是在Windows当中的记事本程序中,当新建一个记事本,默认的保存编码格式就是ANSI,ANSI应该算是一种压缩编码了,当遇到标准的ASCII字符时,采用单字节表示,当遇到非标准的ASCII字符(如中文)时,采用双字节表示。

  • pycharm2021.11激活码(JetBrains全家桶)

    (pycharm2021.11激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html1M3Q9SD5XW-eyJsa…

  • 银行大数据建模交流!

    银行大数据建模交流!金融大数据建模有兴趣的可以一起合作,需要大量合作伙伴这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表…

  • 5 tips for using Google Buzz on your phone

    5 tips for using Google Buzz on your phonehttp://googlemobile.blogspot.com/2010/03/5-tips-for-using-google-buzz-on-your.html 

    2022年10月16日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号