目前的环境是这样的,
在局域网内有部署有一个 HTTP 服务,
现在需要写一个程序去爬里面的内容,
但是需要做到在给定的一组 IP 内切换,
如 HTTP 服务是在 10.0.10.11 上,
爬虫程序部署在 10.0.11.31 上面,
可以设置的一组 IP 是 10.0.11.31-33 共 3 个 IP,
但是爬虫只能部署在 31 上面, 服务器是 linux,
请问可以怎么做?
谢谢.
感谢@defunct9 提供的方案.
通过ip alias能做到一个网卡多个IP地址.
然后在爬虫程序设置路由规则即可.
我是java用个的httpclient设置setRoutePlanner即可完成;
// 根据指定IP地址做出口创建httpclient
private static CloseableHttpClient client(final byte[] ip) {
final RequestConfig.Builder builder = RequestConfig.copy(defaultConfig);
// builder.setRedirectsEnabled(false);
return HttpClientBuilder.create().setDefaultRequestConfig(builder.build())
.setRoutePlanner(new DefaultRoutePlanner(DefaultSchemePortResolver.INSTANCE) {
@SneakyThrows
@Override
protected InetAddress determineLocalAddress(HttpHost firstHop, HttpContext context)
throws HttpException {
return InetAddress.getByAddress(ip);
}
})
.build();
}
1
lcy630409 2022-08-26 11:08:01 +08:00
写个 bash 脚本切换 ip ,定时执行?
|
2
defunct9 2022-08-26 11:24:09 +08:00 via iPhone 1
做两个网卡 alias 不就行了
|
4
defunct9 2022-08-27 22:33:15 +08:00 via iPhone
你爬虫程序得改啊,不指定肯定从缺省的 31 地址出去
|