python使用requests库解析IPv6地址

本文探讨了在使用Python requests库请求网页时如何处理IPv6地址解析的问题。由于requests库默认不直接支持IPv6,作者通过分析源码发现其依赖urllib3的HTTPConnection。解决方案是通过修改allowed_gai_family方法,将地址族设置为AF_INET6,实现对IPv6的支持。文章提供了一个使用猴子补丁的方法来完成这一操作。
摘要由CSDN通过智能技术生成

python使用requests库解析IPv6地址

请求一个网页时,如果需要DNS解析IPv6地址,requests好像并不支持切换IPv6,通过分析requests源码,requests使用了urllib3来处理连接:
urllib3.connection.HTTPConnection

    def _new_conn(self):
        """ Establish a socket connection and set nodelay settings on it.

        :return: New socket connection.
        """
        extra_kw = {}
        if self.source_address:
            extra_kw['source_address'] = self.source_address

        if self.socket_options:
            extra_kw['socket_options'] = self.socket_options

        try:
            conn = connection.create_connection(
                (self._dns_host, self.port), self.timeout, **extra_kw)

        except SocketTimeout as e:
            raise ConnectTimeoutError(
                self, "Connection to %s timed out. (connect timeout=%s)" %
                (self.host, self.timeout))

        except SocketError as e:
           
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值