Я пытаюсь написать сценарий PowerShell, который выполняет HTTP-запрос. Запрос обрабатывается PHP-скриптом, который должен знать IP-адрес клиента. Для этого он читает $_SERVER['REMOTE_ADDR']
.
Теперь происходит следующее странное поведение:
- Когда я использую такой сервис, как whatismyip.com, мой IP-адрес -
xxx.yyy.141.183
- Когда я использую веб-браузер для вызова моего PHP-скрипта,
$_SERVER['REMOTE_ADDR']
возвращает тот же IP, что и выше,xxx.yyy.141.183
(как и ожидалось). - Когда я использую сценарий PowerShell для вызова того же самого сценария PHP,
$_SERVER['REMOTE_ADDR']
возвращает другой IP-адрес, а именноxxx.yyy.51.111
.
Сценарий PowerShell очень прост:
$wc = New-Object System.Net.WebClient
$wc.DownloadString("http://example.net/myscript.php")
Я наблюдаю, как это поведение связано с сетью моего университета. Поэтому я не знаю никаких подробностей о конфигурации сети. Я заметил, что разные машины имеют разные IP-адреса с использованием методов, указанных в пунктах 1 и 2, но все они имеют одинаковые IP-адреса с использованием третьего метода.
Вопрос: Как я могу изменить свой сценарий PowerShell, чтобы он «вел себя как веб-браузер», то есть отправлял запрос, когда удаленный адрес, видимый сервером, равен удаленному адресу, который он видит при получении запроса от веб-браузера?
Бонусный вопрос: почему это происходит?