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?
źródło
$_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.ipconfig
podaje mój141.183
jako mój adres IPv4.Odpowiedzi:
Na podstawie odkrycia, że tylko Firefox wysyła żądania z poprawnym publicznym adresem IP,
xxx.yyy.141.183
podczas gdy IE i Chrome tego nie robią , znalazłem następujące rozwiązanie:xxx.yyy.51.111
IP.Ponieważ nie chcę zmieniać konfiguracji systemu i jak
GlobalProxySelection.GetEmptyWebProxy
zostało przestarzałe, teraz z powodzeniem korzystam z zaproponowanego tutaj rozwiązania : po prostu ustawproxy
właściwość nanull
.źródło