User Tools

Site Tools


sk2:http

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
sk2:http [2025/01/07 12:51] – [Nagłówki HTTP (1/2)] jkonczaksk2:http [2026/11/07 22:08] (current) – jkonczak
Line 4: Line 4:
    p + p   { margin-top: 1.4em }    p + p   { margin-top: 1.4em }
    pre     { margin: 0.1em 0 0 0; padding-top: 0.2em; padding-bottom: 0.2em; line-height: 1em }    pre     { margin: 0.1em 0 0 0; padding-top: 0.2em; padding-bottom: 0.2em; line-height: 1em }
-   pre     { user-select: all } +   //pre     { user-select: all } 
-   code    { user-select: all }+   //code    { user-select: all }
    pre+pre { margin-top: 0.2em }    pre+pre { margin-top: 0.2em }
    .sel    { user-select: all; background-color:#77f1; white-space: nowrap }    .sel    { user-select: all; background-color:#77f1; white-space: nowrap }
Line 241: Line 241:
 Sprawdź jak zostanie zrozumiana nazwa zasobu Sprawdź jak zostanie zrozumiana nazwa zasobu
 <html><span class="sel"></html>%C5%BB%C3%B3%C5%82%C4%87<html></span></html> i <html><span class="sel"></html>%C5%BB%C3%B3%C5%82%C4%87<html></span></html> i
-<html><span class="sel"></html>d%C4%85%C4%87+w+r%C3%B3g<html></span></html>:+<html><span class="sel"></html>%5Bd%C4%85%C4%87%20w%20r%C3%B3g%5D<html></span></html>:
 <code> <code>
-openssl s_client -crlf -quiet -verify_quiet pl.wikipedia.org:https << EOF | grep 'title>'    +openssl s_client -crlf -quiet -verify_quiet pl.wikipedia.org:https << EOF | grep -o '<title>.*</title>'
 GET /wiki/%C5%BB%C3%B3%C5%82%C4%87 HTTP/1.0 GET /wiki/%C5%BB%C3%B3%C5%82%C4%87 HTTP/1.0
 Host: pl.wikipedia.org Host: pl.wikipedia.org
 +User-Agent: I'm a human, not a robot.
  
 EOF EOF
 </code> </code>
 <code> <code>
-openssl s_client -crlf -quiet -verify_quiet www.google.pl:https << EOF | grep -o '<title>.*</title>' +openssl s_client -crlf -quiet -verify_quiet duckduckgo.com:https << EOF | grep -o '<title>.*</title>' 
-GET /search?q=d%C4%85%C4%87+w+r%C3%B3g HTTP/1.0 +GET /?q=%5Bd%C4%85%C4%87%20w%20r%C3%B3g%5D HTTP/1.0 
-Host: www.google.pl +Host: duckduckgo.com
-User-Agent: Mozilla/5.0 Firefox/100+
  
 EOF EOF
Line 261: Line 261:
 Do zmiany ze zwykłego utf-8 na urlencode i z powrotem możesz użyć np. gotowej komendy w perlu czy php: Do zmiany ze zwykłego utf-8 na urlencode i z powrotem możesz użyć np. gotowej komendy w perlu czy php:
 <code> <code>
-openssl s_client -crlf -quiet -verify_quiet www.google.pl:https << EOF | grep -o '<title>.*</title>' +openssl s_client -crlf -quiet -verify_quiet duckduckgo.com:https << EOF | grep -o '<title>.*</title>' 
-GET /search?q=$(perl -Mutf8 -MURI::Escape -e 'print uri_escape_utf8 "żółta żaba żarła żur"') HTTP/1.0 +GET /?q=$(perl -Mutf8 -MURI::Escape -e 'print uri_escape_utf8 "żółta żaba żarła żur"') HTTP/1.0 
-Host: www.google.pl +Host: duckduckgo.com
-User-Agent: Mozilla/5.0 Firefox/100+
  
 EOF EOF
 </code> </code>
 <code> <code>
-openssl s_client -crlf -quiet -verify_quiet www.google.pl:https << EOF | grep -o '<title>.*</title>' +openssl s_client -crlf -quiet -verify_quiet duckduckgo.com:https << EOF | grep -o '<title>.*</title>' 
-GET /search?q=$(php -r 'echo urlencode("żółta żaba żarła żur");') HTTP/1.0 +GET /?q=$(php -r 'echo urlencode("żółta żaba żarła żur");') HTTP/1.0 
-Host: www.google.pl +Host: duckduckgo.com
-User-Agent: Mozilla/5.0 Firefox/100+
  
 EOF EOF
Line 300: Line 298:
 na port 443 adresu IP <html><span class="sel">150.254.186.176</span></html> na port 443 adresu IP <html><span class="sel">150.254.186.176</span></html>
 i podaj różne wartości nagłówka //Host//: raz <html><span class="sel">www.mpu.pl</span></html>, i podaj różne wartości nagłówka //Host//: raz <html><span class="sel">www.mpu.pl</span></html>,
-raz  <html><span class="sel">www.mpk.poznan.pl</span></html>. Porównaj odpowiedzi. +raz  <html><span class="sel">pbo26.um.poznan.pl</span></html>. Porównaj odpowiedzi. 
-<code> +<html><pre class="code"> 
-openssl s_client -quiet -verify_quiet -crlf 150.254.186.176:https << EOF \+openssl s_client -quiet -verify_quiet -crlf <b>150.254.186.176</b>:https << EOF \
        | awk '{if(p)print;else print>"/dev/stderr"};/^\r$/{p=1}' | w3m -T text/html -dump -        | awk '{if(p)print;else print>"/dev/stderr"};/^\r$/{p=1}' | w3m -T text/html -dump -
 GET / HTTP/1.0 GET / HTTP/1.0
 Host: www.mpu.pl Host: www.mpu.pl
  
-EOF +EOF</pre></html> 
-</code> +<html><pre class="code"> 
-<code> +openssl s_client -quiet -verify_quiet -crlf <b>150.254.186.176</b>:https << EOF \
-openssl s_client -quiet -verify_quiet -crlf 150.254.186.176:https << EOF \+
        | awk '{if(p)print;else print>"/dev/stderr"};/^\r$/{p=1}' | w3m -T text/html -dump -        | awk '{if(p)print;else print>"/dev/stderr"};/^\r$/{p=1}' | w3m -T text/html -dump -
 GET / HTTP/1.0 GET / HTTP/1.0
-Host: www.mpk.poznan.pl+Host: pbo26.um.poznan.pl
  
-EOF +EOF</pre></html>
-</code>+
 <html><div class="sk2_spacer"></div></html> <html><div class="sk2_spacer"></div></html>
  
Line 342: Line 338:
  
 ~~Zadanie.#.#~~ ~~Zadanie.#.#~~
-Ściągnij treść strony <html><span class="sel">http://www2.cs.put.poznan.pl/</span></html> i znajdź w nagłówkach+Ściągnij treść strony <html><span class="sel">https://sejm.gov.pl/</span></html> i znajdź w nagłówkach
 odpowiedzi ten proszący o zapamiętanie ciasteczka: odpowiedzi ten proszący o zapamiętanie ciasteczka:
 <code> <code>
-unix2dos << EOF | nc www2.cs.put.poznan.pl 80 | head -n18+openssl s_client -crlf -quiet -verify_quiet sejm.gov.pl:https << EOF | head -n 30
 GET / HTTP/1.0 GET / HTTP/1.0
-Host: www2.cs.put.poznan.pl+Host: sejm.gov.pl 
 +User-Agent: Jonathan Teatime
  
 EOF EOF
Line 354: Line 351:
  
 ~~Zadanie.#.#~~ ~~Zadanie.#.#~~
-Ponownie ściągnij treść strony <html><span class="sel">http://www2.cs.put.poznan.pl/</span></html>, ale tym razem +Ściągnij(( 
-podaj w nagłówkach ciasteczko o treści <html><i><span class="sel">qtrans_front_language=en</span></i></html>. Czy różni + W potoku ''awk'' przerzuca nagłówki do strumienia standardowego błędu, a ''w3m'' 
-się odpowiedź jeśli w żądaniu znalazło się wskazane ciasteczko?+ rysuje otrzymany kod HTML w konsoli. Zamiast ''| w3m …'' możesz użyć też 
 + ''| elinks -dump /dev/sdtin'' lub ''| html2text''. 
 +)) treść strony <html><span class="sel">https://www.printables.com/</span></html>, 
 +najpierw nie podając ciasteczek, potem podając ciasteczko o treści 
 +<html><i><span class="sel">lang=cs</span></i></html>. 
 +Czy różni się odpowiedź jeśli w żądaniu znalazło się wskazane ciasteczko? 
 +<code> 
 +(openssl s_client -crlf -quiet -verify_quiet www.printables.com:https << EOF 
 +GET / HTTP/1.0 
 +Host: www.printables.com 
 + 
 +EOF 
 +) | awk '{if(p)print;else print substr($0,0,'$COLUMNS')>"/dev/stderr"};/^\r$/{p=1}' | 
 +    w3m -T text/html -dump - | head -n 20 
 +</code> 
 <code> <code>
-unix2dos << EOF | nc www2.cs.put.poznan.pl 80 | head -n18+(openssl s_client -crlf -quiet -verify_quiet www.printables.com:https << EOF
 GET / HTTP/1.0 GET / HTTP/1.0
-Host: www2.cs.put.poznan.pl +Host: www.printables.com 
-Cookie: qtrans_front_language=en+Cookie: lang=cs
  
 EOF EOF
 +) | awk '{if(p)print;else print substr($0,0,'$COLUMNS')>"/dev/stderr"};/^\r$/{p=1}' |
 +    w3m -T text/html -dump - | head -n 20
 </code> </code>
  
Line 412: Line 426:
 Host: www.facebook.com Host: www.facebook.com
 Accept-Encoding: $ENC Accept-Encoding: $ENC
-User-Agent: czlowiek+User-Agent: Bowerick Wowbagger
  
 EOF EOF
Line 542: Line 556:
 GET / HTTP/1.0 GET / HTTP/1.0
 Host: www.wikipedia.org Host: www.wikipedia.org
 +User-Agent: Wrackspurt
  
 EOF EOF
Line 551: Line 566:
 GET / HTTP/1.0 GET / HTTP/1.0
 Host: www.wikipedia.org Host: www.wikipedia.org
-If-Modified-Since: Mon, 06 Jan 2025 16:45:09 GMT+User-Agent: Nargle 
 +If-Modified-Since: Mon, 05 Jan 2026 16:36:56 GMT
  
 EOF EOF
Line 566: Line 582:
 GET / HTTP/1.0 GET / HTTP/1.0
 Host: www.wikipedia.org Host: www.wikipedia.org
-If-None-Match: W/"133d4-62b0c59f38f40"+User-Agent: Snorkack 
 +If-None-Match: W/"2656d-647a6aacd7a00"
  
 EOF EOF
Line 610: Line 627:
 )): )):
 <code> <code>
-openssl s_client -verify_quiet -quiet pomoc.put.poznan.pl:https << EOF | awk '{if(p)print;else print>"/dev/stderr"};/^\r$/{p=1}' | w3m -T text/html -dump -+openssl s_client -verify_quiet -quiet pomoc.put.poznan.pl:https << EOF |\ 
 +    awk '{if(p)print;else print>"/dev/stderr"};/^\r$/{p=1}' | w3m -T text/html -dump -
 GET /index.php?/Base/Search/Index HTTP/1.0 GET /index.php?/Base/Search/Index HTTP/1.0
 Host: pomoc.put.poznan.pl Host: pomoc.put.poznan.pl
Line 617: Line 635:
 </code> </code>
 <code> <code>
-openssl s_client -verify_quiet -quiet pomoc.put.poznan.pl:https << EOF | awk '{if(p)print;else print>"/dev/stderr"};/^\r$/{p=1}' | w3m -T text/html -dump -+openssl s_client -verify_quiet -quiet pomoc.put.poznan.pl:https << EOF |\ 
 +    awk '{if(p)print;else print>"/dev/stderr"};/^\r$/{p=1}' | w3m -T text/html -dump -
 POST /index.php?/Base/Search/Index HTTP/1.0 POST /index.php?/Base/Search/Index HTTP/1.0
 Host: pomoc.put.poznan.pl Host: pomoc.put.poznan.pl
Line 898: Line 917:
 w HTTP/2 spowodowane odpowiednio komendami: w HTTP/2 spowodowane odpowiednio komendami:
 <code> <code>
-curl -v --http2            nghttp2.org nghttp2.org/documentation/ nghttp2.org/blog/+curl -v --http2            nghttp2.org nghttp2.org/documentation/ nghttp2.org/blog/  | grep '<title>.*</title>'
 </code> </code>
 <code> <code>
-curl -v --http2 --parallel nghttp2.org nghttp2.org/documentation/ nghttp2.org/blog/+curl -v --http2 --parallel nghttp2.org nghttp2.org/documentation/ nghttp2.org/blog/  | grep '<title>.*</title>'
 </code> </code>
  
 === HTTP/3 ===  === HTTP/3 === 
 +//Uwaga:// w OpenSUSE 15.6 niektóre biblioteki (m. in. OpenSSL) są w starszej wersji niż ta potrzebna dla wsparcia  HTTP/3 w curl. Dlatego do HTTP/3, zamiast systemowego programu ''curl'', użyj wersję ze wskazanego kontenera:
 +<code>
 +sudo systemctl start docker
 +</code>
 +<code>
 +alias my_curl="sudo docker run --network=host --mount type=bind,src=/tmp,dst=/tmp -e SSLKEYLOGFILE=/tmp/sslkey.log --rm alpine/curl-http3 curl"
 +</code>
 +(Po wykonaniu powyższej komendy ''alias'' "lepszy" curl będzie dostępny w tej powłoce jako ''my_curl''.)
  
 ~~Zadanie.#.#~~ ~~Zadanie.#.#~~
Line 915: Line 942:
 git diff --color-words --no-index http_2 http_3 git diff --color-words --no-index http_2 http_3
 </code> </code>
-<html><div class="sk2_spacer"></div></html>+<html><div style="text-align:right"></html>Gotowy wynik możesz obejrzeć [[sk2:http:z8.3|tutaj]].<html></div></html>
  
 <small> <small>
Line 921: Line 948:
 Stwórz pusty plik o nazwie ''sslkey.log'' w katalogu ''/tmp'' np. komendą: Stwórz pusty plik o nazwie ''sslkey.log'' w katalogu ''/tmp'' np. komendą:
 <code> <code>
-touch /tmp/sslkey.log+touch /tmp/sslkey.log && chmod a+rw /tmp/sslkey.log
 </code> </code>
 Następnie w wiresharku wejdź, wybierając z menu //Edycja// pozycję //Preferencje//, Następnie w wiresharku wejdź, wybierając z menu //Edycja// pozycję //Preferencje//,
Line 943: Line 970:
 Użyj do tego //Podążaj / Strumień HTTP/2// oraz //Podążaj / Strumień QUIC// z menu Użyj do tego //Podążaj / Strumień HTTP/2// oraz //Podążaj / Strumień QUIC// z menu
 kontekstowego odpowiednich pakietów. kontekstowego odpowiednich pakietów.
 +<html><div style="text-align:right"></html>Gotowe pakiety możesz pobrać stąd: {{sk2:http:z8_4.pcap}}<html></div></html>
 </small> </small>
  
sk2/http.1736254283.txt.gz · Last modified: (external edit)