美文网首页
python下scarpy爬虫代理错误407

python下scarpy爬虫代理错误407

作者: SunY7 | 来源:发表于2023-04-25 16:22 被阅读0次

我们在数据采集过程中程序会经常返回一些状态码,响应HTTP请求会返回响应状态码,根据状态码可以知道返回信息代表什么意思。今天我们来分享下关于407。一般爬虫程序是不会返回407的,一般出现407是在我们程序挂了代理以后,比如我们的爬虫程序中添加了由亿牛云提供的爬虫隧道代理。但是运行后程序就报了407错误。

! -- encoding:utf-8 --

    import base64            
    import sys
    import random

    PY3 = sys.version_info[0] >= 3

    def base64ify(bytes_or_str):
        if PY3 and isinstance(bytes_or_str, str):
            input_bytes = bytes_or_str.encode('utf8')
        else:
            input_bytes = bytes_or_str

        output_bytes = base64.urlsafe_b64encode(input_bytes)
        if PY3:
            return output_bytes.decode('ascii')
        else:
            return output_bytes

    class ProxyMiddleware(object):                
        def process_request(self, request, spider):
            # 代理服务器(产品官网 www.16yun.cn)
            proxyHost = "t.16yun.cn"
            proxyPort = "31111"

            # 代理验证信息
            proxyUser = "username"
            proxyPass = "password"

            # [版本>=2.6.2](https://docs.scrapy.org/en/latest/news.html?highlight=2.6.2#scrapy-2-6-2-2022-07-25)无需添加验证头,会自动在请求头中设置Proxy-Authorization     
            request.meta['proxy'] = "http://{0}:{1}@{2}:{3}".format(proxyUser,proxyPass,proxyHost,proxyPort)

            # 版本<2.6.2 需要手动添加代理验证头
            # request.meta['proxy'] = "http://{0}:{1}".format(proxyHost,proxyPort)
            # request.headers['Proxy-Authorization'] = 'Basic ' +  base64ify(proxyUser + ":" + proxyPass)                    

            # 设置IP切换头(根据需求)
            # tunnel = random.randint(1,10000)
            # request.headers['Proxy-Tunnel'] = str(tunnel)

            # 每次访问后关闭TCP链接,强制每次访问切换IP
            request.header['Connection'] = "Close"
image.png

那在什么情况下程序会出现407呢?爬虫程序返回407主要是以下的一些原因:
一、全部是http的407错误,是代理认证信息不对。
这种情况就需要我们检查下代理参数是否配置正确,代理是否已经过期。
二、少量http的407错误,大量http的200请求成功,有些语言库第一次请求不会传递认证信息,自动发起第二次请求并将认证信息传递,属正常情况。
三、少量http的200请求成功,少量http的407错误,大量http的429错误,有可能是每秒请求数大量超出代理限定,代理直接返回相关错误。

相关文章

  • Microsoft visual c++ 14.0 is req

    最近在学python爬虫 但是安装scarpy框架的时候报错 Microsoft visual c++ 14.0 ...

  • Python爬虫(六)--Scrapy框架学习

    本文希望达到以下目标: 简要介绍Scarpy 阅读官网入门文档并实现文档中的范例 使用Scarpy优豆瓣爬虫的抓取...

  • 爬虫代理池的设置

    下面介绍一段python爬虫的代理池

  • gradle代理报407错误

    公司网络需要代理才能上网,并且代理需要帐户密码。按照文档在{USER_HOME}/.gradle目录中创建了gra...

  • 【Python - 爬虫】爬虫代理

    设置 urllib 设置代理 Requests 设置代理 selenium 设置代理 获取免费IP 参考链接 Py...

  • 职位分析APP Python爬虫 + Python后台 + An

    个人独自开发项目 工作分析APP 用到的技术 Python requests 爬虫 IP代理 Python Dja...

  • 第七章 反爬虫机制

    反爬虫机制 标签(空格分隔): python scrapy scrapy 架构 useragent 用户代理切换 ...

  • Python爬虫代理

    为什么使用代理 在爬取网站信息的过程中,有些网站为了防止爬虫,可能会限制每个ip的访问速度或访问次数。对于限制访问...

  • Python代理爬虫

    工作原理 : 基于爬虫对网络上免费的代理公布站进行抓取和分析 , 并将最近的结果保存在本地文件中 , 等待验证 ,...

  • python爬虫代理

    一 爬虫为什么要设置代理? 写爬虫,大家都知道,抓的网站和数据多了,如果爬虫抓取速度过快,免不了触发网站的防爬机制...

网友评论

      本文标题:python下scarpy爬虫代理错误407

      本文链接:https://www.haomeiwen.com/subject/fihmjdtx.html