精华内容
下载资源
问答
  • 抓住xx免费代理ip自己写检查,写api,为爬虫提供使用。 第一种方法,不得不说,真的有几个好的代理ip。 第二种方法,github上的这个项目海去了。大部分,你建成后,发现爬虫爬不动,免费代理ip不能使用的好伐!...

    image.png

    在这篇文章之前,很多人应该看过很多代理ip池的文章,发现是漏洞,不能使用。比较多的1.建议购买x代理ip,2.抓住xx免费代理ip,自己写检查,写api,为爬虫提供使用。

    第一种方法,不得不说,真的有几个好的代理ip。

    第二种方法,github上的这个项目海去了。大部分,你建成后,发现爬虫爬不动,免费代理ip不能使用的好伐!稍微好一点的haipproxy,我也用过,但是没有解决根本的问题!大多数ip故障太快了!而且,各种各样的错误,爬上10页,一个成功就会燃烧高香。

    那么,为什么免费代理ip不好用呢?许多人问,那些代理ip商真的有那么多ip吗?

    事实并非如此。免费代理ip大多,扫描ip段、端口、特征代码。发现可以使用的是代理ip。

    代理ip不易使用,比如:

    1.扫描的代理ip是临时的

    2.访问量过大,服务器挂断

    3.原本不是代理ip

    4.有验证

    5.原本是http的代理,访问https当然不行

    6.代理异常,连接中断,带宽满,返回错误。

    获得的免费代理ip,过滤后剩下的ip访问成功率基本上是90%+。

    第一,事实上,最简单的方法是根据服务器开放的端口来判断。如果服务器有80、3389、3306、22等端口,则说明服务器仍在运行其他服务,挂断的可能性很小。如果它是政府和学校的服务器,它会更稳定。当然也有可能打开另一个端口。

    第二,服务器的访问速度判断需要访问多个不同的网站,以获得平均值。这种访问速度相对稳定。

    第三,代理ip的生存时间越长越稳定。当然,这是你抓住后计算的。

    第四,代理类型的再检查,通过访问不同的http和https站点,判断代理是http还是https,进行划分,http代理,在访问http站点时使用,https代理为https访问提供服务

    大家可以根据上面提示,进行自我搭建,希望本章内容可以帮助到大家!
    在这里插入图片描述

    展开全文
  • 在爬虫的过程中暂时封IP太常见了,所以如何搭建自己的免费IP代理池? 一、下载安装 git clone git@github.com:jhao104/proxy_pool.git 或者直接到https://github.com/jhao104/proxy_pool 下载zip文件,解压出来 二、...

    在爬数据的过程中,如果post的速度过快,会返回请求过于频繁的提示,并且会提示我们的IP地址。在爬虫的过程中暂时封IP太常见了,所以如何搭建自己的免费IP代理池?

    一、下载安装
    git clone git@github.com:jhao104/proxy_pool.git
    或者直接到https://github.com/jhao104/proxy_pool 下载zip文件,解压出来

    二、安装依赖
    pip install -r requirements.txt # 这是github作者给出的安装方式
    如果安装有问题,可以找到txt文件自己手动安装所需库

    三、下载redis数据库
    windows下载地址:https://github.com/MicrosoftArchive/redis/releases
    启动redis:运行redis-server.exe(不要关闭)
    查看状态:redis-cli.exe

    Linux安装:sudo apt-get install redis-server
    启动redis:运行redis-server
    查看状态:redis-cli

    四、配置Config.ini:

    # Config.ini 为项目配置文件
    # 配置DB
    type = SSDB       # 如果使用SSDB或redis数据库,均配置为SSDB
    host = localhost  # db host, 不行就用127.0.0.1
    port = 6379       # db port, redis默认是6379
    name = proxy      # 默认配置
    # 配置 ProxyGetter
    freeProxyFirst  = 1  # 这里是启动的抓取函数,可在ProxyGetter/getFreeProxy.py 扩展
    freeProxySecond = 1
    ....
    # 配置 HOST (api服务)
    ip = 127.0.0.1       # 监听ip, 若要开启外网访问改为0.0.0.0
    port = 5010          # 监听端口
    # 上面配置启动后,代理api地址为 http://127.0.0.1:5010
    

    五、启动

    # 如果你的依赖已经安全完成并且具备运行条件,可以直接在Run目录下运行main.py
    # 到Run目录下:
    >>>python main.py
    
    # 如果运行成功你应该看到有4个main.py进程
    
    # 你也可以分别运行他们,
    # 依次到Api下启动ProxyApi.py,Schedule下启动ProxyRefreshSchedule.py和ProxyValidSchedule.py即可.
    

    六、使用
     启动过几分钟后就能看到抓取到的代理IP,可以直接到数据库中查看,也可以通过api访问查看。

    七、总结
    免费的IP代理池搭建并不困难,但是质量也不高,简单测试了拉钩网虽然不会返回请求频繁的问题,但是免费代理IP的可用性不高,购买付费IP代理还是更稳定一些。

    展开全文
  • 当然,如果你有更好的代理接口也可以自己接入。  免费代理的采集也很简单,无非就是:访问页面页面 —> 正则/xpath提取 —> 保存 如何保证代理质量?  可以肯定免费的代理IP大部分都是不能用的,不然别人为...

    1、问题
    代理IP从何而来?
      刚自学爬虫的时候没有代理IP就去小二代理、芝麻http之类有免费代理的网站去爬,还是有个别代理能用。当然,如果你有更好的代理接口也可以自己接入。
      免费代理的采集也很简单,无非就是:访问页面页面 —> 正则/xpath提取 —> 保存
    如何保证代理质量?
      可以肯定免费的代理IP大部分都是不能用的,不然别人为什么还提供付费的(不过事实是很多代理商的付费IP也不稳定,也有很多是不能用)。所以采集回来的代理IP不能直接使用,可以写检测程序不断的去用这些代理访问一个稳定的网站,看是否可以正常使用。这个过程可以使用多线程或异步的方式,因为检测代理是个很慢的过程。
    采集回来的代理如何存储?
      这里不得不推荐一个高性能支持多种数据结构的NoSQL数据库SSDB,用于代理Redis。支持队列、hash、set、k-v对,支持T级别数据。是做分布式爬虫很好中间存储工具。
    如何让爬虫更简单的使用这些代理?
      答案肯定是做成服务咯,python有这么多的web框架,随便拿一个来写个api供爬虫调用。这样有很多好处,比如:当爬虫发现代理不能使用可以主动通过api去delete代理IP,当爬虫发现代理池IP不够用时可以主动去refresh代理池。这样比检测程序更加靠谱。
      2、代理池设计  代理池由四部分组成:
    ProxyGetter:
      代理获取接口,目前有5个免费代理源,每调用一次就会抓取这个5个网站的最新代理放入DB,可自行添加额外的代理获取接口;
    DB:
      用于存放代理IP,现在暂时只支持SSDB。至于为什么选择SSDB,大家可以参考这篇文章,个人觉得SSDB是个不错的Redis替代方案,如果你没有用过SSDB,安装起来也很简单,可以参考这里;
    Schedule:
      计划任务用户定时去检测DB中的代理可用性,删除不可用的代理。同时也会主动通过ProxyGetter去获取最新代理放入DB;
    ProxyApi:
      代理池的外部接口,由于现在这么代理池功能比较简单,花两个小时看了下Flask,愉快的决定用Flask搞定。功能是给爬虫提供get/delete/refresh等接口,方便爬虫直接使用。
    3、代码模块  Python中高层次的数据结构,动态类型和动态绑定,使得它非常适合于快速应用开发,也适合于作为胶水语言连接已有的软件部件。用Python来搞这个代理IP池也很简单,代码分为6个模块:
    Api:
    api接口相关代码,目前api是由Flask实现,代码也非常简单。客户端请求传给Flask,Flask调用ProxyManager中的实现,包括get/delete/refresh/get_all;
    DB:
      数据库相关代码,目前数据库是采用SSDB。代码用工厂模式实现,方便日后扩展其他类型数据库;
    Manager:
    get/delete/refresh/get_all等接口的具体实现类,目前代理池只负责管理proxy,日后可能会有更多功能,比如代理和爬虫的绑定,代理和账号的绑定等等;
    ProxyGetter:
      代理获取的相关代码,目前抓取了快代理、代理66、有代理、西刺代理、guobanjia这个五个网站的免费代理,经测试这个5个网站每天更新的可用代理只有六七十个,当然也支持自己扩展代理接口;
    Schedule:
      定时任务相关代码,现在只是实现定时去刷新代码,并验证可用代理,采用多进程方式;
    Util:
      存放一些公共的模块方法或函数,包含GetConfig:读取配置文件config.ini的类,ConfigParse: 集成重写ConfigParser的类,使其对大小写敏感, Singleton:实现单例,LazyProperty:实现类属性惰性计算。等等;
    其他文件:
      配置文件:Config.ini,数据库配置和代理获取接口配置,可以在GetFreeProxy中添加新的代理获取方法,并在Config.ini中注册即可使用;
      4、安装下载代码:git clone git@github.com:jhao104/proxy_pool.git 或者直接到https://github.com/jhao104/proxy_pool 下载zip文件 安装依赖:pip install -r requirements.txt 启动:需要分别启动定时任务和api 到Config.ini中配置你的SSDB 到Schedule目录下: >>>python ProxyRefreshSchedule.py 到Api目录下: >>>python ProxyApi.py
      5、使用  定时任务启动后,会通过代理获取方法fetch所有代理放入数据库并验证。此后默认每20分钟会重复执行一次。定时任务启动大概一两分钟后,便可在SSDB中看到刷新出来的可用的代理:
     启动ProxyApi.py后即可在浏览器中使用接口获取代理,一下是浏览器中的截图:
    index页面:
    get页面:
    get_all页面:
    爬虫中使用,如果要在爬虫代码中使用的话, 可以将此api封装成函数直接使用,例如:
    import requests def get_proxy(): return requests.get(“http://127.0.0.1:5000/get/”).content def delete_proxy(proxy): requests.get(“http://127.0.0.1:5000/delete/?proxy={}”.format(proxy)) # your spider code def spider(): # … requests.get(‘https://www.example.com’, proxies={“http”: “http://{}”.format(get_proxy)}) # …
    6、最后
    时间仓促,功能和代码都比较简陋,希望能给你们帮助。

    展开全文
  • 觉得那是不够的,很多时候你仅仅伪装成浏览器是解决不了问题的,还需要解决别人封你的ip的问题,所以我又学习了如何爬虫是更换自己的ip,想要有足够的ip来供你更换,一定得先搭建你的ip代理池,那么我们就先搭建自己...

        刚刚学习了爬虫入门爬取小说,觉得那是不够的,很多时候你仅仅伪装成浏览器是解决不了问题的,还需要解决别人封你的ip的问题,所以我又学习了如何爬虫是更换自己的ip,想要有足够的ip来供你更换,一定得先搭建你的ip代理池,那么我们就先搭建自己的ip代理池。

       什么是ip代理池,就是很多代理ip地址放到一起足够让你去更换,那么我们从哪里去获取足够多的ip呢,当然很多前人已经帮我们解决问题了我目前只是入门了,所以我用的是https://www.xicidaili.com/nn/1这个网站,我们先想爬小说一样爬取这个网站上的代理ip,由于我还不会使用数据库我们就先把这个代理ip以字典的形式存放在文本文件里面,看起来很容易,不过本蒟蒻弄了好久,遇到了很多问题:

    1. 爬取西刺网上的ip时每一个页的每个ip有很多信息包括,ip地址,端口,地址,速度等信息,如果你想爬取小说那样用正则表达式是有问题的,信息太多啦,一个要用''' '''才能包含下,而且一个不小心就会,啥页提取不出来,后面才知道用的xpath提取的,需要bs4,lxml库,不过在声明的时候它又说我这个没有这个包,需要安装,要需要导入,这些操作都是网上有的我就不细说了。反正搞啦好久才解决问题。
    2. 学习的时候很多人都告诉你,很多ip是不能用的,需要自己手动检测,然后就需要写一个检测ip是否有效果的问题了。
    3. 爬取ip地址的时候还遇到了,html是乱码的问题,要他用ecodeing='gbk',虽然西刺网没有这个情况.

    参考:怎样简单的搭建一个免费的IP代理池python中requests爬去网页内容出现乱码的解决方案

    代码:

    import requests
    from lxml import etree
    import re
    import time
    import random
    import telnetlib
    def check(ip,port):
        try:
            telnetlib.Telnet(ip, port, timeout=20)
        except:
            return False
        else:
            return True
    send_headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36",
            "Connection": "keep-alive",
            "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
            "Accept-Language": "zh-CN,zh;q=0.8"
        }  # 伪装成浏览器
    def get_agent():
        agents = [
                  'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36',
                  'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;',
                  'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv,2.0.1) Gecko/20100101 Firefox/4.0.1',
                  'Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11',
                  'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',
                  'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)'
                  'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0'
                  ]#获取agent   在多个模拟的浏览器中随机选取一个
        fakeheader = {}
        fakeheader['User-agent'] = agents[random.randint(0, len(agents)-1)]
        return fakeheader
    def get_iplist(url,max_page):
        ip_list={}
        for i in range(1,max_page+1):#爬取很多页的代理ip
            response=requests.get(url+str(i),headers=get_agent())
            response.encoding='utf-8'
            html=response.text
            response.close()
            info = etree.HTML(html)
            address = info.xpath('//tr[@class="odd" or class=""]/td[2]/text()')  # IP地址
            ports = info.xpath('//tr[@class="odd" or class=""]/td[3]/text()')  # 端口
            anonymous = info.xpath('//tr[@class="odd" or class=""]/td[5]/text()')  # 匿名形式
            http_https = info.xpath('//tr[@class="odd" or class=""]/td[6]/text()')  # http or https
            speed = info.xpath('//tr[@class="odd" or class=""]/td[7]/div[1]/@title')  # 连接速度
            speed_width = info.xpath('//tr[@class="odd" or class=""]/td[7]/div[1]/div/@style')  # 连接速度的比例
            conn_time = info.xpath('//tr[@class="odd" or class=""]/td[8]/div[1]/@title')  # 连接时间
            conn_time_width = info.xpath('//tr[@class="odd" or class=""]/td[8]/div[1]/div/@style')  # 连接时间的比例
            life = info.xpath('//tr[@class="odd" or class=""]/td[9]/text()')  # 存活时间
            test = info.xpath('//tr[@class="odd" or class=""]/td[10]/text()')  # 检验时间
        cnt=int(0)
        for i in range(0,len(address)-1):
            if check(address[i],ports[i]):
                ip_list[str(cnt+1)]={
                    'IP地址': address[i]+':'+ports[i],
                    '是否匿名': anonymous[i],
                    '类型': http_https[i],
                    '速度': eval((re.compile('(.*?)秒').findall(speed[i]))[0]),
                    '速度比例': eval((re.compile('width:(.*?)%').findall(speed_width[i]))[0]),
                    '连接时间': eval((re.compile('(.*?)秒').findall(conn_time[i]))[0]),
                    '耗时比例': eval((re.compile('width:(.*?)%').findall(conn_time_width[i]))[0]),
                    '存活时间': eval((re.compile('(\d+).*?').findall(life[i]))[0]),
                    '验证时间': test[i]
                }
                try :
                   #with open('porxy_ip.csv', 'w', encoding='utf-8') as fp:
                    fp.write(str(ip_list[str(cnt+1)]))
                    fp.write('\n')
                    print('成功写入ip及端口:%s'%(address[i]+':'+ports[i]))
                    cnt=cnt+1
                except:
                    print("写入错误!")
                #exit()
            else :
                pass
        return ip_list
    ip_url='https://www.xicidaili.com/nn/'
    fp=open('porxy_ip.csv', 'w', encoding='utf-8')
    max_page=1
    ip=get_iplist(ip_url,max_page)
    print('成功写入%s个可用ip地址'%str(len(ip)))

     

    展开全文
  • 在这篇文章之前, 应该不少人都看过很多搭建代理ip池的文章, 然后发现都是坑, 无法使用。说的比较多的 推荐买xx家的代理ip, 贼稳定, 好使(广告) 抓取xx免费代理ip, 然后自己写一个校验, 然后写一个api, 提供给爬虫...
  • 但是这些IP质量不高,需要自己手动复制粘贴,测试后再使用,效率底下。我们可以写个爬虫,批量获取免费IP,自动测试后,再使用。 本篇文章使用的目标网址为:proxy list。本教程中不解析页面,而是直接获取json格式...
  • 如何让爬虫畅通无阻地高效稳定地夜以继日地永不停息地工作,是无数爬虫工作者梦寐以求的愿望。事实再次证明,世上无难事只怕有心人,只要拥有一个独享IP池,...3、购买一批拨号服务器,自己搭建代理IP池。拨号VPS搭...
  • 于是最终还是决定自己动手写一篇。下面就是实现过程,有兴趣搭建的,试试下吧。 第一步、推荐在连接到此计算机时使用安全证书。 在22端口上输入机器的ip,然后输入用户名和密码。 第二步、安装shadowsocks,在后台...
  • 第三步、当您打开模拟器,打开浏览器,查看被代理的模拟器IP地址。 第四步、不是代理模拟器主窗口,而是模拟器核心进程,可以通过网络连接工具来查看该联网进程。 一定要先打开工具,启动代理功能,再打开模拟器。这...
  • 关于代理IP池的搭建

    2021-03-17 17:14:01
    如何建立代理IP池?还有维护的方法?否则当IP不断被限制后,将无IP可用。下面为大家介绍关于代理IP池的搭建以及维护方法。 一、IP来源以及维护 1.抓取代理 普通***代理IP***的生存时间通常在几分钟或十几分钟左右。...
  • 如何快速使用IP代理池?

    千次阅读 2019-06-09 22:05:00
    1.使用自己搭好的代理池或者别人搭建好的代理池,一般都是网页api的形式。 (1)第一步当然是你的api地址了。 例如: self.PROXY_POOL_URL = 'http://localhost:5000/get' (2)向代理池的api发送请求获取返回的IP...
  • 特此写一篇如何利用Python语言搭建代理池的文章,以降低时间及精力成本,实现自动化获取活跃代理IP的功能。  01 运作原理  一、 网站代理获取  1. 爬免费代理网站的IP列表测试是否可用及是否
  • 一般获取ip代理的方式有三种,第一种自己搭建服务器,这种ip切换工具优点是效果最稳定,时效和地区可控,缺点是需要爬虫爱好者需要有一定能力维护代理服务器,并且成本投入很高。第二种使用免费ip切换工具,这种百度...
  • 当在我们设置IP代理的时候,就需要获得优质的IP资源,有大量的IP资源就可以突破次数的限制,使爬虫更高效的工作。而动态代理IP可以突破次数限制,是提高爬虫高效工作的最好的工具。 所以,很多人都想通过搭建IP池的...
  • 所以很多人都想通过建立IP池的方式,突破换IP的限制,那么这个IP池是如何建立的呢?提出一种构建代理IP池的方法。 一、搭建目的。 爬行数据时,有些网站设置了一些反爬虫设置,然后将自己本地IP地址拖到系统黑名单中...
  • 想用几个阿里或腾讯或百度的学生机,整几个稳定的代理IP,用免费代理的话可能大部分时间被用来测试这些代理是否有效,总结还是自己整几个稳定IP比较舒服,下面就来告诉大家如果使用python搭建隧道代理ip,下面一起来...
  • 自己搭建高质量亿级IP的HTTP/Socks5隧道代理,就在于要手动解析http协,说简单点吧,如果直接用ie上一个网站,用代理get那地方会把完整url写上,而且Connection加上了proxy标志,其他一样。下面就来详细介绍如何搭建...
  • 做网络爬虫时,一般对代理IP的需求量比较大。因为在爬取网站信息的过程中,很多网站做了反爬虫...自己搭建代理服务器,稳定,但需要大量的服务器资源。 本文的代理IP池是通过爬虫事先从多个免费网站上获取代理IP...
  • 代理IP如何挑选?

    2021-03-17 11:37:59
    提到代理IP,相信很多人会选择建立自己的服务器。这种代理IP虽然效果最稳定,时效性和地域完全可控,也可以按照自己的...优质代理多为机房拨号VPS搭建,效率一般在90%以上,基本都可以连接提取的IP。 第二,速度快。优
  • 当然如果是纯想搭建ip代理池的话,可以往下看。 第一步、代理获取 网页分析 通过点击西刺代理国内高匿代理,得到网页信息。 获取IP地址、端口、是否匿名、类型、速度。 第二步、 获取代理信息 这里记得一定要设置...
  • 搭建爬虫代理

    千次阅读 2020-05-29 17:16:42
    当然,如果你有更好的代理接口也可以自己接入例如(亿牛云代理) 免费代理的采集也很简单,无非就是:访问页面页面 —> 正则/xpath提取 —> 保存 如何保证代理质量? 可以肯定免费的代理IP大部分都是不能用的...
  • 朋友来咨询的时候问过这样的一个问题,他说比如人在上海,有一个网站只有上海的用户才能访问,想用自己的电脑做一个代理服务器,让在北京的朋友也能用IP访问此网站,想要实现这样子的方式,得需要怎么操作?...
  • 代理IP一般有很多种获取方法,不同的工作量可以用不同的方法去获取代理IP。获取渠道大致可以分为三种情况: 1.初级爬虫 ...需要一定的花费,比自己搭建服务器贵要便宜很多,也不用自己去维护代理服务器.
  • 代理服务器(Proxy Server)是指那些自己不能执行某种操作的计算机,通过一台服务器来执行该操作,该服务器即为代理服务器。是伴随着Internet应运而生的网络服务技术,它可以实现网络的安全过滤、流量控制(减少...
  • 用Python搭建匿名代理

    千次阅读 2016-12-18 14:28:08
    01 写在前面  常听到很多人抱怨自己IP因爬虫...特此写一篇如何利用Python搭建代理池的文章,以降低时间及精力成本,实现自动化获取活跃代理IP的功能。   02 运作原理 一、 网站代理获取 1.  爬免
  • 爬虫的运行过程中需要大量的代理ip来支持数据采集工作,今天小编就来分享一下搭建动态IP池的方案,供大家参考。 1、爬取免费代理IP搭建代理IP池 这种方法用的人非常的多,因为它是免费的,“免费”两个字足以让绝...
  • 随着互联网的迅猛发展,大数据的应用,大数据样本获得需要通过数据爬虫来实现,而爬虫工作者一般都绕不过代理 ...第一种:自己搭建服务器,这种代理 IP 优点是效果最稳定,时效和地区完全可控,可以按照自己的要求来搞
  • 01 写在前面 常听到很多人抱怨自己IP因爬虫次数太多而...特此写一篇如何利用Python搭建代理池的文章,以降低时间及精力成本,实现自动化获取活跃代理IP的功能。 02 运作原理 一、 网站代理获取 1. 爬免费代理网站...

空空如也

空空如也

1 2 3
收藏数 56
精华内容 22
关键字:

如何自己搭建ip代理