移动端相关网络代理服务器IP过滤

有的代理IP是手机专用代理服务器,VIA会添加移动网络相关信息,如果用了这样的服务器做代理,爬虫访问目标页面就会跳转到移动端页面,导致页面内容和抓取 规则不匹配,从而抓取内容失败。
于是,我们可以在维护代理池的时候,检测是否是手机代理服务器,从而避免这种情况发生

    # 判断是不是手机代理服务器
    # 有些代理IP是手机专用服务器,会将via设置为手机相关,用这个代理后会访问网页会302跳转到移动端页面,导致爬取的页面内容不匹配
    # 判断WAP关键字,例如:中兴 Via=ZXWAP GateWayZTE Technologies、移动梦网 Via=WTP/1.1 BJBJ-PS-WAP1-GW08.bj1.monternet.com,
    # 通过判断网络格式 例如:移动网络格式 VIA=1.0 TD-LTE/FDD-LTE(sbwml.cn) (squid/3.1.23)
    # 中国移动目前使用的GSM(2G)/TD-SCDMA(3G)/TD-LTE(4G)这3模;
    # 中国联通使用的是GSM(2G)/WCDMA(3G)/TD-LTE(4G)/FDD-LTE(4G)。
    # 貌似是一个给移动互联网提供解决方案提高网络运行效率的,例如:Via=1.1 Bytemobile OSN WebProxy/5.1
    def checkMobileVia(self,via):
        if not via:return False

        print 'via:' + via

        via = via.upper()
        mobile_via = ['WAP','TD-LTE','FDD-LTE','CDMA','GSM']

        #遍历判断
        for word in mobile_via:
            if via.find(word)>=0:
                return True

        return False

  def check(self):
    res = requests.head(url, headers=headers, proxies=proxies, timeout=0.3, allow_redirects=False)
    if not res or self.checkMobileVia(res.headers.get('Via')): return False

你可能感兴趣的:(移动端相关网络代理服务器IP过滤)