Мне нужно сделать запрос с поддельным IP-адресом для целей тестирования. Какой самый простой способ сделать это?
Как я могу обманывать IP-адрес отправителя с помощью curl?
Ответ 1
Для моих целей изменение HTTP-заголовка было достаточно, используя следующее:
curl --header "X-Forwarded-For: 1.2.3.4" "http://www.foobar.com"
Ответ 2
Вы не можете.
В общем, spoofing IP-адреса для TCP чрезвычайно сложны. Если у вас нет контроля над маршрутизатором, который находится рядом с вашей целью или рядом с IP-адресом, который вы подделываете, считайте это невозможным.
Пакеты ответов нуждаются в пути к вам, чтобы выполнить даже трехстороннее рукопожатие. Самый надежный способ сделать это - управлять маршрутизатором в наиболее распространенном пути между вашей целью и вашим поддельным IP-адресом: это позволит вам захватывать пакеты между целевым и поддельным адресом и пересылать их вам.
Вы также можете попробовать вставлять рекламные объявления фиктивный BGP-маршрут, но это, несомненно, будет замечено и дорого стоит вам, когда ваши сверстники полностью откажутся от вас.
Ответ 3
Могу ли я сделать фальшивку libcurl или скрыть свой реальный IP-адрес?
Нет. libcurl работает на более высоком уровне. Кроме того, подделка IP-адреса будет подразумевать отправку IP-пакета с вычисленным адресом источника, а затем вы обычно получаете проблему с получением пакета, отправленного обратно, поскольку они не будет направлено вам!
Если вы используете прокси для доступа к удаленным сайтам, сайты не будут видеть ваши локальный IP-адрес, а вместо этого адрес прокси.
Также обратите внимание, что во многих сетях NAT или другие методы IP-манипуляции, что заставляет вас видеть и использовать другой IP-адрес локально чем тот, на который удаленный сервер увидит вас.