V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vvtf
V2EX  ›  程序员

请教一个 IP 代理访问问题

  •  
  •   vvtf · 2022-08-26 10:19:21 +08:00 · 1286 次点击
    这是一个创建于 822 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前的环境是这样的, 
    在局域网内有部署有一个 HTTP 服务,
    现在需要写一个程序去爬里面的内容,
    但是需要做到在给定的一组 IP 内切换,
    如 HTTP 服务是在 10.0.10.11 上,
    爬虫程序部署在 10.0.11.31 上面,
    可以设置的一组 IP 是 10.0.11.31-33 共 3 个 IP,
    但是爬虫只能部署在 31 上面, 服务器是 linux,
    请问可以怎么做?
    谢谢.
    
    第 1 条附言  ·  2022-08-29 15:27:22 +08:00

    感谢@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();
    }
    
    4 条回复    2022-08-27 22:33:15 +08:00
    lcy630409
        1
    lcy630409  
       2022-08-26 11:08:01 +08:00
    写个 bash 脚本切换 ip ,定时执行?
    defunct9
        2
    defunct9  
       2022-08-26 11:24:09 +08:00 via iPhone   ❤️ 1
    做两个网卡 alias 不就行了
    vvtf
        3
    vvtf  
    OP
       2022-08-27 20:55:30 +08:00
    @defunct9
    我试了 alias,
    但是在 HTTP 服务获取到的 IP 地址始终是 31
    defunct9
        4
    defunct9  
       2022-08-27 22:33:15 +08:00 via iPhone
    你爬虫程序得改啊,不指定肯定从缺省的 31 地址出去
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1562 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:01 · PVG 01:01 · LAX 09:01 · JFK 12:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.