15%

БпСстСтС 15% ΠΎΡ‚ всички услуги Π·Π° хостинг

ВСствайтС умСнията си ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Ρ‚Π΅ ΠΎΡ‚ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° всСки хостинг ΠΏΠ»Π°Π½

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄:

Skills
Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ
28.11.2024

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° HTTP заявкитС Π² Linux: Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΡŠΡ‚ HTTP (Hypertext Transfer Protocol) Π΅ Π³Ρ€ΡŠΠ±Π½Π°ΠΊΡŠΡ‚ Π½Π° ΡƒΠ΅Π± комуникацията. ВсСки ΠΏΡŠΡ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π²Π»Π΅Π·Π΅ Π² уСбсайт, към ΡΡŠΡ€Π²ΡŠΡ€Π° сС отправя HTTP заявка. Π—Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° Linux Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° правят ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ HTTP заявкитС Π΅ ΠΎΡ‚ Ρ€Π΅ΡˆΠ°Π²Π°Ρ‰ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π·Π° ΡƒΠ΅Π± Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°, систСмната администрация ΠΈ отстраняванСто Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. Π’ Ρ‚Π°Π·ΠΈ статия сС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Ρ‚ структурата Π½Π° HTTP заявкитС, Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΈ практичСски ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° взаимодСйствиС с тях с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° инструмСнти Π½Π° Linux.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π½Π° HTTP заявка

Π•Π΄Π½Π° HTTP заявка сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ няколко ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°:

Π Π΅Π΄ Π½Π° заявката: Π’ΠΎΠ²Π° Π΅ ΠΏΡŠΡ€Π²ΠΈΡΡ‚ Ρ€Π΅Π΄ Π½Π° заявката ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π²Π°:

  • HTTP ΠΌΠ΅Ρ‚ΠΎΠ΄: ΠŸΠΎΡΠΎΡ‡Π²Π° дСйствиСто, ΠΊΠΎΠ΅Ρ‚ΠΎ трябва Π΄Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ GET, POST).
  • Request-URI: Π Π΅ΡΡƒΡ€ΡΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ сС иска (Π½Π°ΠΏΡ€. /index.html).
  • ВСрсия Π½Π° HTTP: ΠŸΠΎΡΠΎΡ‡Π²Π° вСрсията Π½Π° HTTP ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° (Π½Π°ΠΏΡ€. HTTP/1.1).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

GET /index.html HTTP/1.1

Заглавия: Π’Π΅ прСдоставят Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° информация Π·Π° заявката. Заглавията ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ° Π½Π° Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π°, ΠΏΡ€ΠΈΠ΅Ρ‚ΠΈΡ‚Π΅ Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΈ Π·Π° удостовСряванС.ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Host: www.example.com
User-Agent: Mozilla/5.0 (Linux; Android 10; Pixel 3 XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Mobile Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

ПълСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° HTTP заявка

Π•Ρ‚ΠΎ пълСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° HTTP заявка, Π½Π°ΠΏΡ€Π°Π²Π΅Π½Π° Π·Π° Π²Π»ΠΈΠ·Π°Π½Π΅ Π² уСбсайт:

POST /login HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Linux; Android 10; Pixel 3 XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Mobile Safari/537.36 Content-Type: application/json
Content-Length: 50
{ "username": "exampleUser", "password": "examplePassword" }

HTTP ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ

HTTP Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° няколко ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠΎΠΈΡ‚ΠΎ опрСдСлят дСйствиСто, ΠΊΠΎΠ΅Ρ‚ΠΎ трябва Π΄Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ Π²ΡŠΡ€Ρ…Ρƒ Π΄Π°Π΄Π΅Π½ рСсурс. Най-чСсто срСщанитС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚:

1. GET

  • Π¦Π΅Π»: Π˜Π·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€.
  • Π₯арактСристики:
    • БСзопасна ΠΈ Π±Π΅Π·ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½Π° (няма странични Π΅Ρ„Π΅ΠΊΡ‚ΠΈ).
    • ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ Ρ‡Ρ€Π΅Π· URL адрСса (Π½ΠΈΠ· ΠΎΡ‚ заявки).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

GET /api/users?id=123 HTTP/1.1

2. POST

  • Π¦Π΅Π»: Π˜Π·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ създаванС ΠΈΠ»ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° рСсурс).
  • Π₯арактСристики:
    • НС Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Π° (ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΡ‚ΠΎ ΠΏΠΎΠ΄Π°Π²Π°Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΅Ρ„Π΅ΠΊΡ‚ΠΈ).
    • Π”Π°Π½Π½ΠΈΡ‚Π΅ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ Π² тялото Π½Π° заявката.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

POST /api/users HTTP/1.1
Content-Type: application/json{
"name": "John Doe",
"email": "john@example.com"
}

3. PUT

  • Π¦Π΅Π»: АктуализиранС Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ рСсурс ΠΈΠ»ΠΈ създаванС Π½Π° Π½ΠΎΠ², Π°ΠΊΠΎ Ρ‚ΠΎΠΉ Π½Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°.
  • Π₯арактСристики:
    • Π˜Π΄Π΅ΠΌΠΎΡ‚Π΅Π½Ρ‚Π΅Π½ (повтарянСто Π½Π° заявката Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

PUT /api/users/123 HTTP/1.1
Content-Type: application/json
{
"name": "Jane Doe",
"email": "jane@example.com"
}

4. DELETE

  • Π¦Π΅Π»: ΠŸΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° рСсурс ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€Π°.
  • Π₯арактСристики:
    • Π˜Π΄Π΅ΠΌΠΎΡ‚Π΅Π½Ρ‚Π΅Π½ (повтарянСто Π½Π° заявката Π½Π΅ промСня Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π°).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

DELETE /api/users/123 HTTP/1.1

5. PATCH

  • Π¦Π΅Π»: ΠŸΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° частични ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° рСсурс.
  • Π₯арактСристики:
    • НС Π΅ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° Π΅ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

PATCH /api/users/123 HTTP/1.1

Content-Type: application/json{

"email": "jane.doe@example.com"
}

Π˜Π·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° HTTP заявки Π² Linux

Linux прСдоставя няколко инструмСнта Π·Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° HTTP заявки. По-Π΄ΠΎΠ»Ρƒ са прСдставСни някои ΠΎΡ‚ Π½Π°ΠΉ-чСсто ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ‚Π΅ инструмСнти:

1. curl

curl Π΅ инструмСнт ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ Ρ€Π΅Π΄ Π·Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Ρ‡Ρ€Π΅Π· Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ HTTP.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° заявка GET:

curl -X GET http://www.example.com/api/users

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° POST заявка:

curl -X POST http://www.example.com/api/users -H "Content-Type: application/json " -d '{"name": "John Doe", "email": "john@example.com"}

2. wget

wget Π΅ Π΄Ρ€ΡƒΠ³Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° ΠΎΡ‚ командния Ρ€Π΅Π΄, която сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° изтСглянС Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ‚ ΡƒΠ΅Π±. ЧСсто сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° ΡƒΠ΅Π± страници ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° изтСглянС Π½Π° Ρ„Π°ΠΉΠ»:

wget http://www.example.com/file.zip

3. httpie

httpie Π΅ ΡƒΠ΄ΠΎΠ±Π΅Π½ Π·Π° потрСбитСля HTTP ΠΊΠ»ΠΈΠ΅Π½Ρ‚ с ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ Ρ€Π΅Π΄, ΠΊΠΎΠΉΡ‚ΠΎ прСдоставя прост синтаксис Π·Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° заявки.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° заявка GET:

http GET http://www.example.com/api/users

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° POST заявка:

http POST http://www.example.com/api/users name="John Doe" email="john@example.com"

4. ИзползванС Π½Π° Telnet Π·Π° Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ HTTP заявки

Π—Π° ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΈ Ρ†Π΅Π»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ telnet Π·Π° ΠΏΠΎΠ΄Π°Π²Π°Π½Π΅ Π½Π° Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ HTTP заявки, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΅ ΠΏΠΎ-рядко ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°Ρ‚Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

telnet www.example.com 80

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅:

GET / HTTP/1.1
Host: www.example.com

5. АнализиранС Π½Π° HTTP заявкитС

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ HTTP заявкитС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° инструмСнти ΠΊΠ°Ρ‚ΠΎ tcpdump ΠΈΠ»ΠΈ Wireshark, Π·Π° Π΄Π° ΡƒΠ»ΠΎΠ²ΠΈΡ‚Π΅ мрСТовия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΈΠ· Π½Π° сигурността.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° tcpdump:

sudo tcpdump -i any -A 'tcp port 80 or tcp port 443'

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° HTTP заявкитС Π΅ ΠΎΡ‚ ΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π·Π° всСки, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ с ΡƒΠ΅Π± Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, особСно Π² срСда Π½Π° Linux. ΠšΠ°Ρ‚ΠΎ ΠΎΠ²Π»Π°Π΄Π΅Π΅Ρ‚Π΅ структурата, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈ практичСскитС инструмСнти Π·Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° HTTP заявки, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈΡ‚Π΅ умСнията си Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° ΡƒΠ΅Π± сайтовС, систСмна администрация ΠΈ отстраняванС Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. НСзависимо Π΄Π°Π»ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Ρ‚Π΅ прилоТСния ΠΈΠ»ΠΈ просто взаимодСйстватС с ΡƒΠ΅Π± услуги, солидното Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° HTTP заявкитС Ρ‰Π΅ допринСсС Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π·Π° успСха Π²ΠΈ Π² Π΄ΠΈΠ³ΠΈΡ‚Π°Π»Π½Π°Ρ‚Π° срСда.

15%

БпСстСтС 15% ΠΎΡ‚ всички услуги Π·Π° хостинг

ВСствайтС умСнията си ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Ρ‚Π΅ ΠΎΡ‚ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° всСки хостинг ΠΏΠ»Π°Π½

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄:

Skills
Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ