IPv4的稀少让人很无奈,无法获得大量IP,而IPv6国家正大力推进,而且只要家里宽带支持ipv6,一般都会发下来最小一个/64段,大的可能给到/48甚至更大,同时,由于ipv6的海量性,除了依靠运营商提供外,还可以从不少的网站上直接申请到很大的一个ipv6段来使用,只不过要花点钱找支持bgp session的vps供应商,学习一堆相关的知识配置后才能使用。
受 zu1k 的 http-proxy-ipv6-pool的启发,结合我对于nodejs的理解,配置出了一个算是半起飞级别的爬虫。
本文将会简单介绍我在我的树莓派上配置ipv6爬虫的过程,从系统配置到删库跑路全过程。
首先,你需要确认你能够使用ipv6网络且有大段的ipv6使用,你可以在路由器上查找确认是否获得了公网ipv6地址,并有可用的公网ipv6 Lan前缀,如果你能够看到上面提到这些,并且能够在test-ipv6上去的10/10,那么恭喜你,你已经满足了一半的前提了。
然后,确认你的目标爬取站点是否支持ipv6,通常情况下,你只需要在命令行中打开nslookup,设置查询类型set type=AAAA
,然后查询你所需要爬取的网站的域名,看返回的结果是否有ipv6地址,有的话,就满足另一半的前提了。
接下来是系统的配置工作,首先你需要安装一个ndppd
,于是就sudo apt install ndppd
,然后,因为我不会配置系统服务启动失败不影响重启,我是直接先systemctl stop ndppd
,按需要去启动这个ndppd。ndppd的作用是向周围设备通报,我这里有这个段的地址,请把这些数据包发给我。我们首先创建一个ndppd的模板:
1 | # /etc/ndppd.template.conf |
然后我们编辑ndppd的服务脚本,我在他的启动部分增加了自动获取ipv6前缀并配置ndppd的代码
1 | # /etc/init.d/ndppd |
完成这一步之后,我们只需要systemctl start ndppd
就开始使用这个ipv6段了,我一般建议是比你路由器上的Lan前缀小一点,确保不会干扰到你正常的ipv6上网。
这时候我们可以使用curl
来测试你的ipv6配置是否正确
这里我是用zulk的例子
1 | $ curl --interface 2001:19f0:6001:48e4::1 ipv6.ip.sb |
我们可以看到成功返回了我们指定的地址。
接下来就是结合你自己的爬虫程序,设定好请求时的源IP即可。
通常来说,家宽会每隔24小时强制重新拨号一次,这种情况下,你只需要重新启动,然后使用 systemctl start ndppd
启动我们的ndppd 即可恢复正常的继续爬取网站。
这里有很多不规范的东西,欢迎私信告诉我怎么修改。