curl 可以用下面的方式通过指定的网卡发送数据
curl --interface tun0 httpbin.org/ip
浏览器有没有类似的方式?找了半天,发现一个 hook 的方式
#include <sys/socket.h>
#define IFACE_NAME "wl0"
int connect(int fd, const struct sockaddr *daddr, socklen_t addrlen)
{
int ret;
if (daddr->sa_family == AF_INET)
setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, IFACE_NAME,
sizeof(IFACE_NAME));
__asm__ volatile (
"syscall"
: [eax]"=a"(ret)
: [rax]"a"(42), [rdi]"D"(fd), [rsi]"S"(daddr),
[rdx]"d"(addrlen)
: "rcx", "r11", "memory"
);
return ret;
}
gcc -fpic -fPIC -Wall -Wextra -shared -O3 connect.c -o connect.so
export LD_PRELOAD="/tmp/connect.so" curl httpbin.org/ip
#这样对 curl 是有效的,但是对 chrome 无效
export LD_PRELOAD="/tmp/connect.so" /opt/google/chrome/chrome --headless --disable-gpu --dump-dom --no-sandbox
#用 root 也无效,firefox 也是这样
有没有人知道咋回事?
1
lwjef 2023-04-15 14:50:05 +08:00
这个是你要的吗
routing - Bind unix program to specific network interface - Unix & Linux Stack Exchange https://unix.stackexchange.com/questions/210982/bind-unix-program-to-specific-network-interface |
2
seashell2000 2023-04-15 14:52:12 +08:00 1
use pac
|
3
kernelpanic OP @lwjef 把虚拟网卡加入到 ip netns 就断网了,这种方式应该可以就是不知道怎么配置
|
4
kernelpanic OP @seashell2000 我要的效果是 20 个 Puppeteer 爬虫分别使用 20 个虚拟网卡。。pac 应该做不到
|
5
Puteulanus 2023-04-15 15:06:00 +08:00
跑一个指定网卡的 socks 代理,然后浏览器设置用那个代理?
|
6
DefoliationM 2023-04-15 15:06:51 +08:00
linux 可以用 cgroup 分流一下,通过浏览器的 pid 或者使用不同用户运行浏览器。
|
7
0o0O0o0O0o 2023-04-15 15:28:34 +08:00 via iPhone
#5 #6 的方案都可以
|
8
leonshaw 2023-04-15 15:32:27 +08:00 via Android
静态链接的?改成 ptrace syscall 试试。
|
9
leonshaw 2023-04-15 15:37:13 +08:00 via Android
或者按用户打 mark 配路由策略。
|
10
xxb 2023-04-15 15:37:56 +08:00
跑 20 個 docker ,分別 20 個 ip 和 mac
|
11
akira 2023-04-15 16:08:53 +08:00
考虑下分别给代理软件绑定网卡,然后浏览器指定不同的代理端口?
|
12
kernelpanic OP 找到原因了。。。Puppeteer 加一个--allow-unsecure-dlls 参数就可以了。。。。
|
13
iutopia 2023-04-15 21:17:49 +08:00
windows 怎么处理?
|
14
kernelpanic OP |
15
ch2 2023-04-16 13:17:03 +08:00
你这个用 docker 就行了,每个容器改各自的路由表
|
16
huangmingyou 2023-04-17 16:31:24 +08:00
用 netns 加 macvlan 可以实现
|
17
iutopia 2023-04-18 09:00:36 +08:00
@kernelpanic #14 realease 空了呀。
|
18
iutopia 2023-04-18 15:44:33 +08:00
@kernelpanic #14 经过测试,blind 之后,被绑定的浏览器并没有从指定的网卡里面走数据。
|