Chcę pobrać instancje tej strony za pomocą skryptu, który wstrzykuje zmiany parametrów do HTTP POST.
Korzystając z rozszerzenia Firefox Sabotaż danych, przechwyciłem przykładowe żądanie. Oto nieprzetworzone nagłówki (pominięto kodowanie zawartości i gzip Accept)
Host: www.fourmilab.ch
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:43.0) Gecko/20100101 Firefox/43.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
DNT: 1
Referer: http://www.fourmilab.ch/cgi-bin/Yoursky
Connection: keep-alive
Podobnie są to nieprzetworzone dane postu
date=1&utc=2010-02-24+0%3A00%3A00&jd=2455251.50000&lat=47%B0&ns=North&lon=7%B0&ew=East&coords=on&moonp=on&deep=on&deepm=2.5&consto=on&constn=on&limag=5.5&starnm=2.0&starbm=2.5&imgsize=1200&fontscale=0.7&scheme=0&elements=
Użyłem ich do skonstruowania polecenia wget, które, o ile rozumiem, powinno zwrócić tę samą stronę internetową, którą zobaczy przeglądarka.
wget --header="Host: www.fourmilab.ch" --header="User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:43.0) Gecko/20100101 Firefox/43.0" --header="Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" --header="Accept-Language: en-US,en;q=0.5" --header="DNT: 1" --header="Referer: http://www.fourmilab.ch/cgi-bin/Yoursky" --header="Connection: keep-alive" -data "date=1&utc=2010-02-24+0%3A00%3A00&jd=2455251.50000&lat=47%B0&ns=North&lon=7%B0&ew=East&coords=on&moonp=on&deep=on&deepm=2.5&consto=on&constn=on&limag=5.5&starnm=2.0&starbm=2.5&imgsize=1200&fontscale=0.7&scheme=0&elements=" -o /dev/null -O - http://www.fourmilab.ch/cgi-bin/Yoursky > /tmp/sky.html
Serwer nie odpowiada zgodnie z oczekiwaniami.
Rezultatem w przeglądarce jest to, że pola formularza strony internetowej zostaną wstępnie wypełnione tymi samymi wartościami, jakie były w pierwotnym żądaniu, więc jeśli ponownie naciśniesz przycisk Aktualizuj, będziesz cyklować ten sam wynik.
Kiedy uruchamiam wersję wget, zwraca domyślną początkową stronę internetową, tak jakbyśmy robili GET i nie wymagali żadnych konkretnych parametrów.
Czy używam wget niepoprawnie? A może niekompletnie? Dlaczego nie uzyskuje tego samego wyniku co przeglądarka?