request中如何添加代理配置

先领会防止爬虫被反的两个策略;在进行request代办署理设置。

东西/原料

  • 浏览器、电脑

方式/步调

  1. 1

    饭爬虫第一招:

    动态设置User-Agent(随机切换User-Agent,模拟分歧用户的浏览器信息)

    然后,采用 random随机模块的choice方式随机选择User-Agent,这样每次请求城市从中选择,请求很频仍的话就多找几个user-agent。

    def load_page(url, form_data):

        USER_AGENTS = [

            "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",

            "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",

            "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",

            "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)",

            "Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6",

            "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1",

            "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0",

            "Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5"

        ]

     

        user_agent = random.choice(USER_AGENTS)

         

        headers = {

            'User-Agent':user_agent

        }

  2. 2

    反爬虫第二招:

    利用IP地址池:VPN和代办署理IP,此刻大部门网站都是按照IP来ban的。

    因为良多网站会检测某一段时候某个IP的拜候次数(经由过程流量统计,系统日记等),若是拜候次数多的不像正常人,它会禁止这个IP的拜候。

    所以我们可以设置一些代办署理办事器,每隔一段时候换一个代办署理,就算IP被禁止,依然可以换个IP继续爬取。

    urllib2中经由过程ProxyHandler来设置利用代办署理办事器

    ProxyHandler处置器(代办署理设置): 这样就设置了一个无需认证的代办署理

    import urllib2

    #设置一个代办署理hander

    httpproxy_handler = urllib2.ProxyHandler({"http" : "124.88.67.81:80"})

     

    opener = urllib2.build_opener(httpproxy_handler)

     

    request = urllib2.Request("http://www.baidu.com/")

     

    response = opener.open(request)

     

    print response.read()

  3. 3

    若是代办署理IP足够多,就可以随机选择一个代办署理去拜候网站。

    import urllib2

    import random

     

    proxy_list = [

        {"http" : "124.88.67.81:80"},

        {"http" : "124.88.67.81:80"},

        {"http" : "124.88.67.81:80"},

        {"http" : "124.88.67.81:80"},

        {"http" : "124.88.67.81:80"}

    ]

     

    # 随机选择一个代办署理

    proxy = random.choice(proxy_list)

    # 利用选择的代办署理构建代办署理处置器对象

    httpproxy_handler = urllib2.ProxyHandler(proxy)

     

    opener = urllib2.build_opener(httpproxy_handler)

     

    request = urllib2.Request("http://www.baidu.com/")

    response = opener.open(request)

    print response.read()

  4. 4

    requset 模块设置代办署理方式:

    A、通俗代办署理

    import requests# 按照和谈类型,选择分歧的代办署理

    proxies = { 

     "http": "http://12.34.56.79:9527",  

    "https": "http://12.34.56.79:9527",

     }

     response = requests.get("http://www.baidu.com", proxies = proxies)

    print response.text

  5. 5

    B、私密代办署理

    import requests

    # 若是代办署理需要利用HTTP Basic Auth,可以利用下面这种格局:

    proxy = { "http": "账号:暗码@61.158.163.130:16816" }

    response = requests.get("http://www.baidu.com", proxies = proxy)

    print response.text

  6. 6

    Google Cache 和 Baidu Cache:若是可能的话,利用谷歌/百度等搜刮引擎办事器页面缓存获取页面数据。

  7. 7

    利用 Crawlera(专用于爬虫的代办署理组件),准确设置装备摆设和设置下载中心件后,项目所有的request都是经由过程crawlera发出。

注重事项

  • 注重代码复制是否犯错,避免呈现行不通的环境。
  • 发表于 2019-05-17 21:21
  • 阅读 ( 1218 )
  • 分类:其他类型

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
联系我们:uytrv@hotmail.com 问答工具