精华内容
下载资源
问答
  • 本章就讲讲封IP问题的一个解决策略——部署ADSL服务器吧。 ADSL服务器是什么,我在这里就不详说了,可以百度下,总结来说,就是可以通过不断的拨号断开宽带连接,从而获取新的IP。 我们老板是一个善良的人,嗯嗯,...

    1.问题背景

    我们公司需要到某环保平台爬取环保信息,但平台那边先从封cookie开始,后来又封IP,目前又开始封账号。。本章就讲讲封IP问题的一个解决策略——部署ADSL服务器吧。

    ADSL服务器是什么,我在这里就不详说了,可以百度下,总结来说,就是可以通过不断的拨号断开宽带连接,从而获取新的IP。

    我们老板是一个善良的人,嗯嗯,要求很明确,一是爬虫脚本能运行稳定,二是成本低(泻药。。。),然后我和另外一个同事一同测试ip代理和ADSL服务器,发现,ADSL动态拨号还是相当稳定的,于是果断选择ADSL。

    ADSL服务器不但便宜,而且稳定,但比较头疼的是,服务器需要我们自己部署,折腾了好几天,总算解决了各种问题,需要考虑的问题有以下几个方面:

    • 如何部署ADSL服务器;
    • 如何才能让ADSL服务器动态拨号,获取新的IP;
    • 如何才能让公司的脚本自动获取远程ADSL服务器的IP;
    • 【需要认真琢磨的】怎样对脚本改进,使得能够实现对IP的最大利用。

    2.部署ADSL服务器环境

    我使用的是云立方的动态拨号服务,预装的系统是ubuntu14.04,因为个人熟悉的原因。如果你喜欢Centos或者windows,也可以。以下是折腾几天部署服务器的总结:

    目前使用的是云立方平台提供的ADSL动态拨号服务。
    URL: https://www.yunlifang.cn/
    Account: 账户名:XXXX  密码:XXXX 自己注册下吧。 
    
    0.远程登录
    ssh root@远程ip -p 端口号
    1.TinyProxy安装,在安装前应该先adsl-start打开网络,否则安装包无法更新。
    adsl-start
    sudo apt-get update
    apt-get install tinyproxy
    
    注:在云立方ADSL服务器中, adsl-start/stop是pppoe-start/stop的别名,是shell命令。
    
    2.然后配置参数文件:
    vi /etc/tinyproxy.conf
    
    3.修改下面两个部分。
    Port 8888      #预设是8888端口
    Allow 127.0.0.1     #将127.0.0.1改成你自己的IP,只有这个IP才能连接,前面打#注释掉则所有人都可以连接
    
    4.TinyProxy打开与关闭
    service tinyproxy start/restart/stop
    
    5.在sender.py文件目录下发送文件到远程服务器根目录下
    scp -P 20133 sender.py root@58.211.138.107:~/
    
    6.安装依赖的包文件
    apt-get install python3-pip
    pip3 install requests
    
    [
    进程查看命令
    ps -ef | grep python/ppp
    ]
    
    7.在运行sender.py文件前务必关闭防火墙
    sudo apt-get install ufw
    sudo ufw disable
    
    8.运行sender2.py
    python3 sender2.py便可获取新的ip
    
    9.有时会遇到多个ppp的问题,这是由于ppp进程冲突导致的,解决方法是重启服务器,
    reboot
    
    10.有时会遇到adsl-start超时问题,重启也无法解决,貌似是宽带的问题,还是直接问云立方客服吧, QQ:4006677945。

    3.如何才能让ADSL服务器动态拨号,获取新的IP

    不说废话了,在2里第8个步骤我已经提示了下,就是通过运行sender2.py这个脚本,从而实现ip的自动更换,下面直接粗暴的贴上代码,核心代码就是 pppoe-start/stop,执行一次脚本后,就能实现动态拨号:

    import subprocess
    import re
    import requests
    import time
    
    # 拨号网卡
    ADSL_IFNAME = 'ppp1'
    # 测试URL
    TEST_URL = 'http://www.baidu.com'
    # 测试超时时间
    TEST_TIMEOUT = 5
    # 拨号出错重试间隔
    ADSL_ERROR_CYCLE = 3
    # ADSL命令
    ADSL_BASH_STOP = 'pppoe-stop'
    ADSL_BASH_START = 'pppoe-start'
    # 代理运行端口
    PROXY_PORT = 8888
    # 客户端唯一标识
    CLIENT_NAME = 'adsl1'
    
    
    class Sender(object):
        def get_ip(self, ifname=ADSL_IFNAME):
            """
            获取本机ip
            :param ifname: 网卡名称
            :return:
            """
            (status, output) = subprocess.getstatusoutput('ifconfig')
            if status == 0:
                print(output)
                result = re.findall(ifname + '.*?inet addr:.*?(\d+\.\d+\.\d+\.\d+)', output, re.S | re.I)
                if result:
                    ip = result[0]
                    return ip
    
        def test_proxy(self, proxy):
            """
            测试代理
            :param proxy: 代理
            :return: 测试结果
            """
            try:
                response = requests.get(TEST_URL, proxies={
                    'http': 'http://' + proxy,
                    'https': 'https://' + proxy
                }, timeout=TEST_TIMEOUT)
                if response.status_code == 200:
                    return True
            except Exception as e:
                print(e)
                return False
    
        def adsl(self):
            """
            拨号主进程
            :return: None
            """
    
            print('ADSL Start, Remove Proxy, Please wait')
            subprocess.getstatusoutput(ADSL_BASH_STOP)
            time.sleep(0.5)
            (status, output) = subprocess.getstatusoutput(ADSL_BASH_START)
            print('status', status, 'output', output)
            if status == 0:
                print("ADSL successfully")
                ip = self.get_ip()
                if ip:
                    print('Now IP', ip)
                    print('Testing Proxy, Please wait')
                    proxy = '{ip}:{port}'.format(ip=ip, port=PROXY_PORT)
                    while True:
                        if self.test_proxy(proxy):
                            print('Valid Proxy')
                            break
                        else:
                            print('Invalid Proxy')
                            print('Sleeping')
                            subprocess.getstatusoutput('service tinyproxy stop')
                            time.sleep(0.5)
                            subprocess.getstatusoutput('service tinyproxy restart')
                else:
                    print('Get IP Failed, Redailing')
    
    
    if __name__ == '__main__':
        sender = Sender()
        sender.adsl()
    

    4.如何才能让公司的脚本自动获取远程ADSL服务器的IP

    24点了...困了,有时间补上。。。提示:在本地运行一个获取ip脚本,用到的主要模块是paramiko...

    展开全文
  • 爬虫怎么解决封IP

    千次阅读 2019-02-06 21:59:49
    爬虫怎么解决封IP
                   
    转载于 https://www.zhihu.com/question/26018679

    这个网站提供上千个 http://www.vpn.cn/ ip交换

    网络爬虫抓取信息的过程中,如果抓取频率高过了网站的设置阀值,将会被禁止访问。通常,网站的反爬虫机制都是依据IP来标识爬虫的。


    于是在爬虫的开发者通常需要采取两种手段来解决这个问题:
    1、放慢抓取速度,减小对于目标网站造成的压力。但是这样会减少单位时间类的抓取量。
    2、第二种方法是通过设置代理IP等手段,突破反爬虫机制继续高频率抓取。但是这样需要多个稳定的代理IP。

    代理IP可以搜索到免费的,但是可能不太稳定,也有收费的,但是不一定划算,也可能不是长久之计


    普通的基于ADSL拨号的解决办法

    通常,在抓取过程中遇到禁止访问,可以重新进行ADSL拨号,获取新的IP,从而可以继续抓取。但是这样在多网站多线程抓取的时候,如果某一个网站的抓取被禁止了,
    同时也影响到了其他网站的抓取,整体来说也会降低抓取速度。


    一种可能的解决办法

    同样也是基于ADSL拨号,不同的是,需要两台能够进行ADSL拨号的服务器,抓取过程中使用这两台服务器作为代理。
    假设有A、B两台可以进行ADSL拨号的服务器。爬虫程序在C服务器上运行,使用A作为代理访问外网,如果在抓取过程中遇到禁止访问的情况,立即将代理切换为B,然后将A进行重新拨号。如果再遇到禁止访问就切换为A做代理,B再拨号,如此反复。如下图:

    使用A为代理,B拨号:
    <img data-rawheight="327" data-rawwidth="721" src="https://pic1.zhimg.com/50/9196e28cd8621a06cd0f0339f1fa765b_hd.jpg" class="origin_image zh-lightbox-thumb" width="721" data-original="https://pic1.zhimg.com/9196e28cd8621a06cd0f0339f1fa765b_r.jpg">使用B为代理,A拨号
    <img data-rawheight="327" data-rawwidth="721" src="https://pic2.zhimg.com/50/7afaf540be23920733bc466ae3f6f651_hd.jpg" class="origin_image zh-lightbox-thumb" width="721" data-original="https://pic2.zhimg.com/7afaf540be23920733bc466ae3f6f651_r.jpg">
               

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • 轻松解决IP问题

    千次阅读 2019-05-05 09:31:59
    派克斯,PPTP,HTTP,SOCKS5,游戏IP,产品适用如QQ,YY,快手,虎牙,DNF,逆水寒,万王,红警,问道,传奇以及各种模拟器等游戏,高匿名防; 派克斯 派克斯是使用ADSL拨号的方式来改变IP,需要下载派克斯客户端,每拨一次...

    派克斯,PPTP,HTTP,SOCKS5,游戏IP,产品适用如QQ,YY,快手,虎牙,DNF,逆水寒,万王,红警,问道,传奇以及各种模拟器等游戏,高匿名防封;

    派克斯

    派克斯是使用ADSL拨号的方式来改变IP,需要下载派克斯客户端,每拨一次,就更换一个IP,通过拨号的切换来实现更换IP,适用于各种游戏防封、注册、跑号、投票、挂机、推广业务,IP重复率低,操作简单。

    PPTP

    PPTP可用于手机端和电脑端,是一种协议,直接修改电脑和手机上的协议,不需要安装软件,能屏蔽掉本地IP;

    PPTP分为单地区和混拨。单地区就是指单个地区的IP,混拨指多个地区的IP,比如全国的IP,一个省的IP。

    HTTP爬虫代理

    动态转发IP方案,全高匿名,私密IP,固定网关将您每次请求的HTTP重定向到不同的后端IP,支持API;

    QQ:52693511  自助购买链接:https://v.duoip.cn/customer/signup/?sale=lidandan

    展开全文
  • 爬虫怎么解决封IP

    千次阅读 2018-04-10 10:11:29
    转载于 https://www.zhihu.com/question/26018679这个网站提供上千个 ...于是在爬虫的开发者通常需要采取两种手段来解决这个问题:1、放慢抓取速度,减小对于目标网站造成的压力。但是这样会减少单位时间...
    转载于 https://www.zhihu.com/question/26018679

    这个网站提供上千个 http://www.vpn.cn/ ip交换

    在网络爬虫抓取信息的过程中,如果抓取频率高过了网站的设置阀值,将会被禁止访问。通常,网站的反爬虫机制都是依据IP来标识爬虫的。


    于是在爬虫的开发者通常需要采取两种手段来解决这个问题:
    1、放慢抓取速度,减小对于目标网站造成的压力。但是这样会减少单位时间类的抓取量。
    2、第二种方法是通过设置代理IP等手段,突破反爬虫机制继续高频率抓取。但是这样需要多个稳定的代理IP。

    代理IP可以搜索到免费的,但是可能不太稳定,也有收费的,但是不一定划算,也可能不是长久之计。


    普通的基于ADSL拨号的解决办法

    通常,在抓取过程中遇到禁止访问,可以重新进行ADSL拨号,获取新的IP,从而可以继续抓取。但是这样在多网站多线程抓取的时候,如果某一个网站的抓取被禁止了,
    同时也影响到了其他网站的抓取,整体来说也会降低抓取速度。


    一种可能的解决办法

    同样也是基于ADSL拨号,不同的是,需要两台能够进行ADSL拨号的服务器,抓取过程中使用这两台服务器作为代理。
    假设有A、B两台可以进行ADSL拨号的服务器。爬虫程序在C服务器上运行,使用A作为代理访问外网,如果在抓取过程中遇到禁止访问的情况,立即将代理切换为B,然后将A进行重新拨号。如果再遇到禁止访问就切换为A做代理,B再拨号,如此反复。如下图:

    使用A为代理,B拨号:
    &amp;lt;img data-rawheight=&quot;327&quot; data-rawwidth=&quot;721&quot; src=&quot;https://pic1.zhimg.com/50/9196e28cd8621a06cd0f0339f1fa765b_hd.jpg&quot; class=&quot;origin_image zh-lightbox-thumb&quot; width=&quot;721&quot; data-original=&quot;https://pic1.zhimg.com/9196e28cd8621a06cd0f0339f1fa765b_r.jpg&quot;&amp;gt;使用B为代理,A拨号
    &amp;lt;img data-rawheight=&quot;327&quot; data-rawwidth=&quot;721&quot; src=&quot;https://pic2.zhimg.com/50/7afaf540be23920733bc466ae3f6f651_hd.jpg&quot; class=&quot;origin_image zh-lightbox-thumb&quot; width=&quot;721&quot; data-original=&quot;https://pic2.zhimg.com/7afaf540be23920733bc466ae3f6f651_r.jpg&quot;&amp;gt;
    展开全文
  • 解决被西刺代理封ip问题

    千次阅读 2019-04-29 11:07:28
    不过在把 ip 保存到本地文件的过程中,由于保存的格式不美观,我尝试修改代码以改变保存格式,因为在爬取的时候只设置了 Use-Agent,没有设置 proxy,所以在多次运行爬虫脚本后,最后成功被西刺代理网站掉了我真实...
  • 解决IP问题几种方法

    万次阅读 2019-03-04 15:46:00
    接下来就讲讲使用爬虫时ip限制问题的六种方法!  方法1.  1、IP必须需要,如果有条件,建议一定要使用代理IP。  2、在有外网IP的机器上,部署爬虫代理服务器。  3、你的程序,使用轮训替换代理服务器来访问...
  • java爬虫遇到封IP问题

    2019-10-11 19:31:25
    近期做java爬虫,爬某房产网站的时候,该网站对IP监测非常敏感,故需要对应的解决方案,且被后不是405页面,而是一个纯白的空页面,所以爬下来的document是空的,在解析的时候才报错。 解决方案是去西刺代理爬取IP...
  • 如何解决爬虫ip问题

    千次阅读 2019-02-18 09:29:30
    ...“爬虫代理IP”通过固定云代理服务地址,建立专线网络链接,代理平台自动实现毫秒级代理IP切换,保证了网络稳定性和速度,避免爬虫客户在代理IP策略优化上投入精力。 作者969501824
  • ip代理池 本项目其实就是个简单的代理服务器,经过我小小的修改。加了个代理池进来。 渗透、爬虫的时候很容易就会把自己ip给ban了所以就需要ip代理池了。 使用 1、启动ip代理池 先把这个项目跑起来 ...
  • 游戏ip如何解决

    千次阅读 2021-02-09 11:39:00
    很多人都遇到玩游戏的时候突然掉线,然后就一直连接不上了,后来知道是IP段被,基本上解决方式,就是账号只能重新申请号,但是有账号也没有用,ip一致,链接也链接不了,有号也进不去。如果能更改游戏Ip应该是很...
  • 测试中被封ip和mac的解决办法

    千次阅读 2019-04-22 13:08:43
    今天在客户这做内网测试,在测试注入的时候触发了防护设备,禁了我的ip,然后我换了一个ip还是不行。 最后请教别人才知道防护设备永久禁了我的ip和mac地址,下面就开始改mac地址 这个mac地址是我随便在网上...
  • 一. 多协程爬虫遇到的难点 之前本着一封IP就切换IP的原则做了个协程爬虫。但是操作并发运行的爬虫和单线程的爬虫的难度... 解决方案 并发问题,自然要用到协程间通讯,Event。具体思想就是,当一个协程被封IP了,...
  • 问题说明:家里群晖使用FRPC开了端口映射之后,在外面登陆提示IP地址被了,因为是在公网,怎么改IP都是FRPC代理的那一台,所以无法去控制面板删除IP 解决思路:家里还映射了路由器的WBESSH,所有使用web登陆到...
  • 爬去豆瓣IP,用IP代理解决

    万次阅读 2018-03-26 23:01:37
    import requestsimport random#用不同IP去访问要爬去的网站#在https://proxy.coderbusy.com/找到的IP地址(不停刷新即可)pro=['122.152.196.126','114.215.174.227','119.185.30.75']#头信息head={ 'user-Agent':'...
  • nginx定时封ip防爬虫

    千次阅读 2020-01-19 16:54:51
    我们公司网站爬虫爬取频次太高,查阅资料后...主要思路是:读取nginx的access.log 获取ip访问信息,将访问超过多少次的ip存入到blockip.conf,由nginx.conf引用blockip.conf达到封ip目的。 脚本代码新手小白一个...
  • 爬虫ip的6个解决方法

    万次阅读 2019-08-17 16:23:04
    接下来就讲讲使用爬虫时ip限制问题的六种方法!  方法1.  1、IP必须需要,如果有条件,建议一定要使用代理IP。  2、在有外网IP的机器上,部署爬虫代理服务器。  3、你的程序,使用轮训替换代理服务器来访问...
  • 能不能在程序里,伪装成他们的IP来访问他们,这样的话就应该不会有问题,或者有没有其他方式解决??? 还有一种情况,访问过于频繁,就会有验证码输入信息,如何跳过验证信息,或其他方式,能够正确解析网页内容...
  • 1.使用Snoopy或curl传...6.如果发现重起路由还是显示被,有可能对方了你的mac地址,现在路由器都有伪造MAC的功能,可以写程序或手动修改路由器的MAC地址,网上也有专门修改网卡mac地址的工具。
  • 如何发布网站系统,如何解决80端口被、动态IP、甚至无公网IP的环境问题: 动态公网IP时,可以利用动态域名解析方案,固定域名实时解析到本地IP,即可正常使用域名网站访问。开放的动态域名解析有dnspod的api、...
  • 采用多线程,也需要大量的IP,而且使用高匿名代理,不然会被目标网站检测到你使用了代理IP,而且透露了你的真实IP,如此肯定会封IP。倘若使用高匿名代理即不一样,对方并没有发现。我一直使用的是**万变ip**。 二、...
  • RT 求帮忙啊[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/11.gif][/img]
  • 动态IP、无公网IP、80端口被、HTTP被屏蔽,这些问题都是自己的服务器
  • 最近各种网站的采集程序写的比较多,遇到在采某网站时采到100多条时突然发现对方的网站打不开了,猜到肯定被封ip了,用了代理还是会封,这不是办法。在网上找了一些资料都没有找到,功夫不负有心人啊,在找的时侯有...
  • 爬虫-IP封解决办法(转载)

    千次阅读 2016-08-15 10:03:25
    如果有条件,其实可以跟机房多申请外网IP。 2.在有外网IP的机器上,部署代理服务器。 3.你的程序,使用轮训替换代理服务器来访问想要采集的网站。 好处: 1.程序逻辑变化小,只需要代理功能。 2.根据对方网站...
  • GoogleMap 封IP

    2007-10-01 10:45:00
    前一段时间做了个卫星图片下载拼接软件,本来用的好好的,已经下载了接近3G的图片,可惜最近总是被googlemap封IP,不知道如何解决?苦闷... 

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,400
精华内容 10,560
关键字:

怎么解决封ip问题