背景:
- b站对高频请求的 ip 会使用封禁策略,接口会返回 -412 错误码,若频率更高甚至会拒绝连接。
- 目前观测到,b站的封 ip 策略只针对单个 ip,不会直接封一个段,甚至对 ipv6 的策略一样。
- b站服务器支持 ipv6
- 大多数家庭宽带、IDC 均可分配得到 ipv6,且一般来说至少会划分/64 的子网,也就是 2^64=18446744073709551616 个 ipv6 地址。
绕过反爬:
与 ipv4 的代理池思路相同,至少 2^64 个的 ipv6 地址也可以用来组成一个 ipv6 的代理池。请求b站 api 时,随机从代理池选择一个 ipv6 地址使用即可。
不过很多旧的代理工具对 ipv6 支持不佳,如 3proxy 会频繁出现 hosts 失效、路由不通、认证失败等玄学错误,且其性能一般。若您执意要尝试,可以参考这个脚本。