移动端相关网络代理服务器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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,732评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,281评论 19 139
  • 心瘾-徐子泓 憧憬未來嗎?回憶過去吧! 這是一曲令人絕望的輓歌 想想你躲在被人遺忘的角落裏 逃避着一切,外面雨都下...
    塔沙阅读 164评论 0 0
  • “木兰之阁” 退伍海军女兵创立的茶生活会馆! (一) 我总觉得我们...
    木兰阁文静阅读 795评论 0 3
  • 风轻轻拂过小草 泥土安慰她的迷茫 可以摇晃 可以枯黄 有土便不会流浪 雨哗啦淋过小草 泥土拥抱她的忧伤 可以脆弱 ...
    涅昀凰阅读 226评论 0 1