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 也是这样
有没有人知道咋回事?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.