V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
bruce00
V2EX  ›  问与答

爬取的免费 IP 怎么有效性这么高?甚至 100%

  •  
  •   bruce00 · 2018-12-27 07:26:56 +08:00 · 2745 次点击
    这是一个创建于 2158 天前的主题,其中的信息可能已经有所发展或是发生改变。

    检测网址: https(或 http)://httpbin.org/ip

    检测方法:用 python 的 requests 请求,如果状态码为 200 则认为有效

    检测结果:有效率高达 90%甚至 100%,但是随机选取了几个通过检测的 ip 请求原代理 IP 网站,成功率 0%,试着请求豆瓣,成功率 50%

    目前猜想: 1、代理 IP 网站自己把放出的 ip 屏蔽了; 2、部分 IP 已经被使用过且已被目标网站屏蔽; 3、检测的网址或检测的方法有问题。。。

    # 检测 IP 有效性
    def test_proxy(proxy):
        ip_port = proxy['ip_port']
        scheme = proxy['scheme']
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6788.400 QQBrowser/10.3.2864.400'
        }
        ip = {
            scheme: "{}://".format(scheme) + ip_port
        }
        try:
            res = requests.get('{}://httpbin.org/ip'.format(scheme), headers=headers, proxies=ip, timeout=5)
            if res.status_code == 200:
                items = {
                    'proxy': scheme + '://' + ip_port
                }
                collection.insert(items)
                print('有效', ip_port)
        except:
            print('无效')
            pass
    
    8 条回复    2018-12-27 11:08:10 +08:00
    dengtongcai
        1
    dengtongcai  
       2018-12-27 08:32:55 +08:00 via iPhone
    有效时间有多久
    meiyoumingzi6
        2
    meiyoumingzi6  
       2018-12-27 09:45:12 +08:00 via Android
    200 认为有效不太科学吧
    bruce00
        3
    bruce00  
    OP
       2018-12-27 10:00:53 +08:00
    @dengtongcai 刚才检测了一遍,有效率 70%,跟昨天差不多,这是批量提取出来的,直接从网站上爬的有效率更高,正常么?
    bruce00
        4
    bruce00  
    OP
       2018-12-27 10:02:45 +08:00
    @meiyoumingzi6 我也加了个 print(res.text)大致看了看,几乎都能返回网页的内容
    miniliuke
        5
    miniliuke  
       2018-12-27 10:04:17 +08:00 via Android
    @bruce00 你访问百度还返回 200 呢,啥时候百度成为你的代理了.......不如直接拿代理去访问你的某个页面,对比一下返回的内容,一样说明有效
    bruce00
        6
    bruce00  
    OP
       2018-12-27 10:14:13 +08:00
    @miniliuke 意思是网上说免费 IP 万人骑可用率低是针对热门网站吧?
    dengtongcai
        7
    dengtongcai  
       2018-12-27 11:05:11 +08:00
    @bruce00 我的意思是比如说你测试时间是 2018-12-27 11:00 然后在 2018-12-17 11:05 之间是否一直有效,中间会不会有无效的情况
    bruce00
        8
    bruce00  
    OP
       2018-12-27 11:08:10 +08:00 via iPhone
    @dengtongcai 原来是这样
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   921 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:19 · PVG 06:19 · LAX 14:19 · JFK 17:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.