• IPIDEA的使用方式


    文章目录


    一、平台介绍

    1.前言

    最近使用python写了一些爬虫程序,用来帮助我们实现数据统计和数据监控。但是发现有些网站加入了反爬机制,其中最主要的一种方式是当发现单个IP大量的访问请求的时候就会将对应的IP加入黑名单不响应(也就是我们常说的封IP)。这让我们的爬虫程序瞬间失去了功能。
    后来,万能的群友给我推荐IP代理利用代理池来进行爬虫来进行规避,发现 Ipidea在线代理池 解决了这个问题。

    2.简单介绍

    请添加图片描述
    Ipidea是一个IP代理平台,为全球用户提供优质大数据代理服务,目前拥有千万级真实住宅IP资源,包含超过220个国家和地区,日更新超过4000万,汇聚成代理服务池并提供API接入,支持http、https、socks5等多种协议类型,并且拥有API形式和账号密码多种使用方式,非常易于上手。

    3.适用场景

    其实代理Ip池的用处不只是规避掉爬虫的限制,我们一起看看其他应用面吧。

    在这里插入图片描述

    很多时候我们不想暴露我们的Ip或者希望有些时候我们的Ip被对方加入了一些限制名单或者我们想知道日常用户访问的真实样貌的时候都可以使用代理ip池。

    4.特色功能

    4.1全局动态住宅代理
    动态代理覆盖全球240+国家地区,且均为真实的家庭住宅ip,这意味着请求的成功率更好,且数据的真实性更高。
    4.2多种调用方式
    支持api接口调用、账号密码调用以及插件代理,使我们的应用成本大大降低。
    4.3定制使用时效
    出口IP时效可以自己设置,或者每次进行更换,可以让我们使用更加灵活。
    4.4高匿隧道
    隧道中转,支持高并发,不同端口的出口为不同的ip,自动切换,让我们的信息更加安全。
    4.5完善文档支持
    对于不同语言都有对应的实例文档,方便我们快速上手。


    二、获取代理ip池

    接下来我们使用一个简单的例子来展示一下平台的使用方式:

    1.注册信息

    首先打开对应的官网,注册的话可以白嫖50M流量:
    在这里插入图片描述

    然后一注册会提醒你实名,因为提取链接需要实名,所以建议在这个地方就进行实名认证哦!
    请添加图片描述

    2.获取代理API

    首先我们在实名之后的页面直接找到对应的位置即可进入相应的位置。
    请添加图片描述
    然后按照下图的设置过程记录下我们的提取链接
    在这里插入图片描述

    3.获取代理信息并检测代理可用性

    这部分其实网站已经给我们做好了对应的demo,我们只需要进行下载并进行少量修改就可以了。
    在这里插入图片描述

    在VSCODE中演示了一下主要修改的地方,修改结束后我们就可以尝试运行了。
    在这里插入图片描述

    点击运行后看到终端的显示就是说明正常:
    在这里插入图片描述

    如果遇到非200的返回码说明有些问题,常见的问题是没有加入ip白名单,可以在个人中心加入哦,当然如果还有其他错误也可以去官网找客服解决,回答很专业。


    三、代理爬取数据

    其实我们观察整体函数,我们需要改动的部分就是请添加图片描述

    1.编写功能代码

    其中的proxies就是对应的代理信息,这部分我们不用动,我们只需要把while True内的内容换成我们自己想要获取的信息就可以了。以下是我模拟的Ipidea的SEO排名优化的例子:

    import requests as rq
    import re
    
    res = rq.get('https://www.google.com.hk/search?q=Ipidea')
    #获取排名
    pattern = re.compile(r'div class="BNeawe UPmit AP7Wnd">(.*?)
    ', re.S) results = pattern.findall(res.text) i = 1 for result in results: if result == 'www.ipidea.net': print(i) break i+=1 if len(results) == 0 or (i != 1): print(-1)#不符合要求打印-1
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    这个其实就是核心代码,代码的核心功能就是查看ipidea的网站搜索排名是否处于第一个的位置。

    2.插入到代理代码

    我们稍微改造一点就可以将其加入到我们的代理ip测试工具中。其中我为了减少信息干扰,保存了所有的不符合要求的ip地址,然后最后打印出来。我们就可以利用ip获取到对应的位置信息来做相应的优化。

    error = [] #收集排名不在第一ip用于优化
    # 核心业务
    def testPost(host, port):
        proxies = {
            'http': 'http://{}:{}'.format(host, port),
            'https': 'http://{}:{}'.format(host, port),
        }
        res = ""
    
        while True:
            try:
                res = rq.get('http://www.google.com.hk/search?q=Ipidea', proxies=proxies, timeout=5)
                pattern = re.compile(r'div class="BNeawe UPmit AP7Wnd">(.*?)
    ', re.S) results = pattern.findall(res.text) i = 1 if(len(results) == 0): print(host,'访问失败') for result in results: if result == 'www.ipidea.net': break i+=1 if i != 1: error.append(host) break except Exception as e: print(e) break return
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    最后的整体代码(我去除了我的提取链接!):

    # coding=utf-8
    # !/usr/bin/env python
    import json
    import threading
    import time
    import requests as rq
    import re
    
    error = [] #收集排名不在第一ip用于优化
    # 核心业务
    def testPost(host, port):
        proxies = {
            'http': 'http://{}:{}'.format(host, port),
            'https': 'http://{}:{}'.format(host, port),
        }
        res = ""
    
        while True:
            try:
                res = rq.get('http://www.google.com.hk/search?q=Ipidea', proxies=proxies, timeout=5)
                pattern = re.compile(r'div class="BNeawe UPmit AP7Wnd">(.*?)
', re.S) results = pattern.findall(res.text) i = 1 if(len(results) == 0): print(host,'访问失败') for result in results: if result == 'www.ipidea.net': break i+=1 if i != 1: error.append(host) break except Exception as e: print(e) break return headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", "Accept-Encoding": "gzip, deflate, br" } class ThreadFactory(threading.Thread): def __init__(self, host, port): threading.Thread.__init__(self) self.host = host self.port = port def run(self): testPost(self.host, self.port) # 提取代理的链接 json类型的返回值 tiqu = '提取链接' # 每次提取10个,放入线程中 resp = rq.get(url=tiqu, timeout=5) try: if resp.status_code == 200: dataBean = json.loads(resp.text) else: print("获取失败") time.sleep(1) except ValueError: print("获取失败") time.sleep(1) else: # 解析json数组 print("code=", dataBean["Code"]) code = dataBean["Code"] if code == 0: threads = [] for proxy in dataBean["Data"]: threads.append(ThreadFactory(proxy["ip"], proxy["port"])) for t in threads: # 开启线程 t.start() time.sleep(0.01) for t in threads: # 阻塞线程 t.join() # break print('排名不在第一的ip',error) time.sleep(1)

四、使用感受

其实可以发现只需要改动核心代码的位置就可以完成我们想要的功能,还是非常方便使用的,并且本身给的示例代码就是多线程,我们可以通过调整ip数量调整并发数也是非常方便。
使用下来,可以感受到ipidea代理平台的用心,主要是这种开箱即用的感觉真的极大的降低了学习成本,如果遇到不清楚不明白的问题在线客服也能极速相应,如果大家有一些项目有这些需求还是推荐大家进行尝试的,当然,我们还是要做一只文明的爬虫,只获取公开信息,不要爬取非法信息!

文末送书

博主通过好友之后,会将大家拉到一个小群里面,凭运气抽奖

赠送书籍: 《数据结构和算法基础》

在这里插入图片描述


??? 扫描 下方 关注公众号 参与每周福利???

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    【在SpringBoot项目中使用Validation框架检查数据格式】
    我眼中的大数据(三)——MapReduce
    【前端 Echarts】小白初步学习小结Echarts基本使用
    服务器中了elbie勒索病毒解决办法,elbie勒索病毒解密数据恢复
    Springboot 过滤器、拦截器、全局异常处理
    用RocketMQ这么久,才知道消息可以这样玩
    iWatch框架设计
    数据结构与算法(一):概述与复杂度分析
    微服务全栈:深入核心组件与开发技巧
    (2022牛客多校四)A-Task Computing (排序+动态规划)
  • 原文地址:https://blog.csdn.net/jiong9412/article/details/126103694