Answers:
您可以使用-H/--header
参数:
您可能会欺骗您的IP地址:
curl --header "X-Forwarded-For: 192.168.0.2" http://example.com
示例:
客户
$ curl http://webhost.co.uk
网络主机
$ tailf access.log | grep 192.168.0.54
192.168.0.54 - - [10/Nov/2014:15:56:09 +0000] "GET / HTTP/1.1" 200 14328 "-"
"curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3
libidn/1.18 libssh2/1.4.2"
客户端的IP地址已更改
$ curl --header "X-Forwarded-For: 192.168.0.99" http://webhost.co.uk
网络主机
$ tailf access.log | grep 192.168.0.99
192.168.0.99 - - [10/Nov/2014:15:56:43 +0000] "GET / HTTP/1.1" 200
14328 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0
zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
男子卷曲
-H/--header <header>
(HTTP) Extra header to use when getting a web page. You may
specify any number of extra headers. Note that if you should add
a custom header that has the same name as one of the internal
ones curl would use, your externally set header will be used
instead of the internal one. This allows you to make even
trickier stuff than curl would normally do. You should not
replace internally set headers without knowing perfectly well
what you’re doing. Remove an internal header by giving a
replacement without content on the right side of the colon,
as in: -H "Host:".
参考文献:
我认为接受的答案并不能真正帮助您一路欺骗IP。除非您有权访问目标计算机附近的路由器,否则您无法真正欺骗源IP。
TCP在3向握手机制上工作。您将无法完成此握手,因为来自目标计算机的握手响应将转到您的欺骗IP,而不是您自己的IP(除非如前所述,您控制他附近的路由器并将响应重定向到您自己)。
PS:您也许可以发送UDP消息,但是我还没有尝试过。
curl
,我假设他们正在尝试访问一些HTTP资源。UDP上的HTTP尚不curl
支持AFAIK,目前还不能进行实验。
如果您的本地网络接口具有多个IP地址,则可以更改源IP地址。
假设您有一台具有2个IP地址的服务器,1.1.1.10
并且2.2.2.20
:
$ ip route
default via 1.1.1.193 dev eth0
1.1.1.192/27 via 1.1.1.193 dev eth0
1.1.1.192/27 dev eth0 proto kernel scope link src 1.1.1.10
2.2.2.20 via 2.2.2.20 dev eth0 scope link
您可以使用很棒的ifconfig.co Web服务来验证当前的公共IP地址:
$ curl -4 ifconfig.co
1.1.1.10
要使用其他IP地址()访问ifconfig.co Web服务2.2.2.20
,您可以基于目标服务器的IP地址创建路由。使用dig从DNS A
记录中查找目标IP地址:
$ dig ifconfig.co
...
ifconfig.co. 39 IN A 104.28.18.94
ifconfig.co. 39 IN A 104.28.19.94
...
现在为这些IP地址添加自定义路由:
$ ip route add 104.28.18.94/32 via 1.1.1.193 dev eth0 src 2.2.2.20
$ ip route add 104.28.19.94/32 via 1.1.1.193 dev eth0 src 2.2.2.20
再次运行curl,您会看到您正在使用另一个源IP地址:
$ curl -4 ifconfig.co
2.2.2.20
另外,您的路由信息也会更新:
$ ip route
default via 1.1.1.193 dev eth0
1.1.1.192/27 via 1.1.1.193 dev eth0
1.1.1.192/27 dev eth0 proto kernel scope link src 1.1.1.10
2.2.2.20 via 2.2.2.20 dev eth0 scope link
104.28.18.94 via 1.1.1.193 dev eth0 src 2.2.2.20
104.28.19.94 via 1.1.1.193 dev eth0 src 2.2.2.20
注意:仅当源IP地址可以解析到您的服务器时,此方法才有效,否则TCP 3向握手将失败,如此处所述。