Próbuję napisać skrypt PowerShell, który wykonuje żądanie HTTP. Żądanie jest obsługiwane przez skrypt PHP, który musi znać adres IP klienta. W tym celu czyta $_SERVER['REMOTE_ADDR']
.
Teraz występuje następujące dziwne zachowanie:
- Kiedy korzystam z usługi takiej jak whatismyip.com, mój adres IP to
xxx.yyy.141.183
- Gdy używam przeglądarki internetowej do wywoływania mojego skryptu PHP,
$_SERVER['REMOTE_ADDR']
zwraca ten sam adres IP, co powyżejxxx.yyy.141.183
(zgodnie z oczekiwaniami). - Kiedy używam skryptu PowerShell do wywoływania tego samego skryptu PHP,
$_SERVER['REMOTE_ADDR']
zwraca inny adres IP, a mianowiciexxx.yyy.51.111
.
Skrypt PowerShell jest bardzo prosty:
$wc = New-Object System.Net.WebClient
$wc.DownloadString("http://example.net/myscript.php")
Obserwuję to zachowanie związane z siecią mojej uczelni. Dlatego nie znam żadnych szczegółów na temat konfiguracji sieci. Zauważyłem, że różne maszyny wydają się mieć różne adresy IP przy użyciu metod opisanych w punktach 1 i 2, ale wszystkie mają takie same adresy IP przy użyciu trzeciej metody.
Pytanie: Jak mogę zmodyfikować skrypt PowerShell, aby „zachowywał się jak przeglądarka internetowa”, tj. Aby wysłać żądanie, w którym adres zdalny widziany przez serwer jest równy adresowi zdalnemu widzianemu podczas odbierania żądania z przeglądarki internetowej?
Pytanie dodatkowe: Dlaczego tak się dzieje?
ipconfig
podaje mój 141.183
jako mój adres IPv4.
$_SERVER['REMOTE_ADDR']
Jest względne oczywiście .. Również co maipconfig
powiedzieć Twój IP jest? Najprawdopodobniej*.*.141.183
jest to zapora twojego uniwersytetu. Ale to tylko spekulacja.