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

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

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄: Skills Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ
Заглавия
Linux

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

HTTP (Hypertext Transfer Protocol) Π΅ основният ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π΅Π½ слой Π½Π° ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ ΡƒΠ΅Π±. ВсСки ΠΏΡŠΡ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ Π·Π°Ρ€Π΅ΠΆΠ΄Π° страница, сС ΠΏΡ€Π°Π²ΠΈ API ΠΏΠΎΠ²ΠΈΠΊ ΠΈΠ»ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ ΠΈΠ·Π²Π»ΠΈΡ‡Π° ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ рСсурс, HTTP заявка Π΅ Π² основата Π½Π° Ρ‚ΠΎΠ²Π° взаимодСйствиС. Π—Π° администраторитС Π½Π° Linux систСми, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΡ‚Π΅ Π½Π° DevOps, Π΄ΡŠΠ»Π±ΠΎΠΊΠΎΡ‚ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ са структурирани HTTP заявкитС, ΠΊΠΎΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΈ ΠΊΠ°ΠΊ Π΄Π° сС ΡΡŠΡΡ‚Π°Π²ΡΡ‚ ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ ΠΎΡ‚ командния Ρ€Π΅Π΄ Π½Π΅ Π΅ просто ΠΏΠΎΠ»Π΅Π·Π½ΠΎ β€” Ρ‚ΠΎΠ²Π° Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½ΠΎ.

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

Какво С HTTP заявка?

HTTP заявка Π΅ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅, ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ΠΎ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ (ΠΊΠ°Ρ‚ΠΎ ΡƒΠ΅Π± Π±Ρ€Π°ΡƒΠ·ΡŠΡ€, ΠΌΠΎΠ±ΠΈΠ»Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ инструмСнт ΠΎΡ‚ командния Ρ€Π΅Π΄) към ΡΡŠΡ€Π²ΡŠΡ€, с ΠΊΠΎΠ΅Ρ‚ΠΎ Π³ΠΎ ΠΌΠΎΠ»ΠΈ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ дСйствиС Π²ΡŠΡ€Ρ…Ρƒ рСсурс. Π‘ΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ слСд Ρ‚ΠΎΠ²Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° заявката ΠΈ Π²Ρ€ΡŠΡ‰Π° HTTP ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€.

Π’ΠΎΠ·ΠΈ ΠΎΠ±ΠΌΠ΅Π½ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ сС управлява ΠΎΡ‚ HTTP спСцификацията, която Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π΅ Π½Π°ΠΉ-ΡˆΠΈΡ€ΠΎΠΊΠΎ разпространСна ΠΊΠ°Ρ‚ΠΎ HTTP/1.1 ΠΈ HTTP/2, ΠΊΠ°Ρ‚ΠΎ HTTP/3 (Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° QUIC) Π½Π°Π±ΠΈΡ€Π° Π±ΡŠΡ€Π·ΠΎ Ρ‚Π΅ΠΌΠΏ Π½Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ°Π½Π΅.

Анатомия Π½Π° HTTP заявка

Всяка HTTP заявка сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Ρ‚Ρ€ΠΈ основни части: линия Π½Π° заявката, Π·Π°Π³Π»Π°Π²ΠΊΠΈ ΠΈ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ тяло Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° всСки ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ Π·Π° отстраняванС Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° API ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π½Π° конфигурация Π½Π° ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ΠΈ.

1. Линия Π½Π° заявката

Линията Π½Π° заявката Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΏΡŠΡ€Π²ΠΈΡΡ‚ Ρ€Π΅Π΄ Π½Π° HTTP заявка. Вя ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Ρ‚Ρ€ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈ с ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈ:

  • HTTP ΠΌΠ΅Ρ‚ΠΎΠ΄ β€” дСйствиСто, ΠΊΠΎΠ΅Ρ‚ΠΎ трябва Π΄Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ (Π½Π°ΠΏΡ€. GET, POST, DELETE)
  • Request-URI β€” ΠΏΡŠΡ‚ΡΡ‚ Π΄ΠΎ цСлСвия рСсурс (Π½Π°ΠΏΡ€. /index.html ΠΈΠ»ΠΈ /api/users)
  • HTTP вСрсия β€” вСрсията Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, която сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° (Π½Π°ΠΏΡ€. HTTP/1.1)

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

GET /index.html HTTP/1.1

2. Π—Π°Π³Π»Π°Π²ΠΊΠΈ Π½Π° заявката

Π—Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅ носят ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ Π·Π° заявката. Π’Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Ρ‚ ΡΡŠΡ€Π²ΡŠΡ€Π° Π·Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ, удостовСритСлни Π΄Π°Π½Π½ΠΈ, прСдпочитания Π·Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅. Всяка Π·Π°Π³Π»Π°Π²ΠΊΠ° Π΅ Π΄Π²ΠΎΠΉΠΊΠ° ΠΊΠ»ΡŽΡ‡-стойност Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π° с Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅.

ЧСсто срСщани Π·Π°Π³Π»Π°Π²ΠΊΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ Ρ†Π΅Π»ΠΈ:

Π—Π°Π³Π»Π°Π²ΠΊΠ°Π¦Π΅Π»
HostΠ£ΠΊΠ°Π·Π²Π° Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΡ‚ΠΎ ΠΈΠΌΠ΅ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°
User-AgentΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π° клиСнтския софтуСр, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ заявката
AcceptКазва Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΊΠ°ΠΊΠ²ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΈ
Content-TypeОписва Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° тялото Π½Π° заявката
Content-LengthΠ£ΠΊΠ°Π·Π²Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° тялото Π½Π° заявката Π² Π±Π°ΠΉΡ‚ΠΎΠ²Π΅
AuthorizationНоси удостовСритСлни Π΄Π°Π½Π½ΠΈ Π·Π° удостовСряванС
Accept-EncodingΠ˜Π·Π±Ρ€ΠΎΡΠ²Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈΡ‚Π΅ Π·Π° компрСсия, ΠΊΠΎΠΈΡ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°
ConnectionΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° Π΄Π°Π»ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° остава ΠΎΡ‚Π²ΠΎΡ€Π΅Π½Π° слСд заявката

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°Π³Π»Π°Π²ΠΊΠΈ:

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
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

3. Вяло Π½Π° заявката

НС всички HTTP заявки Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ тяло. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΊΠ°Ρ‚ΠΎ GET ΠΈ DELETE ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π½Π΅ носят тяло. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΊΠ°Ρ‚ΠΎ POST, PUT ΠΈ PATCH ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ тялото Π·Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° формуляри, JSON ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΈ ΠΈΠ»ΠΈ ΠΊΠ°Ρ‡Π²Π°Π½Π΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.

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

По-Π΄ΠΎΠ»Ρƒ Π΅ пълна, рСалистична HTTP заявка към endpoint Π·Π° Π²Ρ…ΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ° JSON ΡƒΡ‡Π΅Ρ‚Π½ΠΈ Π΄Π°Π½Π½ΠΈ:

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: 57
Accept: application/json
Connection: keep-alive

{
  "username": "exampleUser",
  "password": "examplePassword"
}

Π Π°Π·Π±ΠΈΠ²ΠΊΠ° Π½Π° Ρ‚ΠΎΠ²Π°:

  • POST /login HTTP/1.1 β€” линията Π½Π° заявката
  • Π‘Π»ΠΎΠΊΡŠΡ‚ с Π΄Π²ΠΎΠΉΠΊΠΈ ΠΊΠ»ΡŽΡ‡-стойност β€” Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅ Π½Π° заявката
  • JSON ΠΎΠ±Π΅ΠΊΡ‚ΡŠΡ‚ Π² Π΄ΡŠΠ½ΠΎΡ‚ΠΎ β€” тялото Π½Π° заявката

HTTP ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ обяснСни

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

GET β€” Π˜Π·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° рСсурс

Π¦Π΅Π»: Π˜Π·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€Π° Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅.

Π₯арактСристики:

  • БСзопасСн β€” Π½Π΅ промСня ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°
  • Π˜Π΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π΅Π½ β€” ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΡ‚ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π° ΡΡŠΡ‰ΠΈΡ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚
  • ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ сС ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ Ρ‡Ρ€Π΅Π· URL заявката
  • Никога Π½Π΅ трябва Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° чувствитСлни Π΄Π°Π½Π½ΠΈ

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

GET /api/users?id=123 HTTP/1.1
Host: api.example.com
Accept: application/json

Π‘Π»ΡƒΡ‡Π°ΠΈ Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°: Π—Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡƒΠ΅Π± страници, ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° API Π΄Π°Π½Π½ΠΈ, ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.

POST β€” Π˜Π·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°

Π¦Π΅Π»: Π˜Π·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° Π·Π° създаванС Π½Π° Π½ΠΎΠ² рСсурс ΠΈΠ»ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° процСс.

Π₯арактСристики:

  • НС Π΅ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π΅Π½ β€” ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΡΡŠΡ‰Π°Ρ‚Π° заявка Π΄Π²Π° ΠΏΡŠΡ‚ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° създадС Π΄ΡƒΠ±Π»ΠΈΡ€Π°Π½ΠΈ записи
  • Π”Π°Π½Π½ΠΈΡ‚Π΅ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ Π² тялото Π½Π° заявката
  • ОбикновСно сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° формуляри ΠΈ създаванС Π½Π° API рСсурси

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

POST /api/users HTTP/1.1
Host: api.example.com
Content-Type: application/json
Content-Length: 51

{
  "name": "John Doe",
  "email": "john@example.com"
}

Π‘Π»ΡƒΡ‡Π°ΠΈ Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°: РСгистрация Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», формуляри Π·Π° Π²Ρ…ΠΎΠ΄, създаванС Π½Π° записи, ΠΊΠ°Ρ‡Π²Π°Π½Π΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.

PUT β€” Замяна ΠΈΠ»ΠΈ създаванС Π½Π° рСсурс

Π¦Π΅Π»: Пълна замяна Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ рСсурс ΠΈΠ»ΠΈ създаванС Π½Π° Π½Π΅Π³ΠΎ, Π°ΠΊΠΎ ΠΎΡ‰Π΅ Π½Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°, Π½Π° посочСния URI.

Π₯арактСристики:

  • Π˜Π΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π΅Π½ β€” ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΡΡŠΡ‰Π°Ρ‚Π° PUT заявка няколко ΠΏΡŠΡ‚ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΡΡŠΡ‰ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° рСсурса
  • ЗамСства цСлия рСсурс (Π·Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ PATCH, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ частично)

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

PUT /api/users/123 HTTP/1.1
Host: api.example.com
Content-Type: application/json
Content-Length: 52

{
  "name": "Jane Doe",
  "email": "jane@example.com"
}

Π‘Π»ΡƒΡ‡Π°ΠΈ Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°: АктуализиранС Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ» Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», замяна Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Ρ„Π°ΠΉΠ» Ρ‡Ρ€Π΅Π· API.

DELETE β€” ΠŸΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° рСсурс

Π¦Π΅Π»: Π˜Π·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π½Π° посочСния рСсурс ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€Π°.

Π₯арактСристики:

  • Π˜Π΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π΅Π½ β€” ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° рСсурс, ΠΊΠΎΠΉΡ‚ΠΎ Π²Π΅Ρ‡Π΅ Π½Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°, всС ΠΎΡ‰Π΅ Π²Ρ€ΡŠΡ‰Π° ΡƒΡΠΏΠ΅ΡˆΠ΅Π½ (ΠΈΠ»ΠΈ 404) ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π±Π΅Π· Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ странични Π΅Ρ„Π΅ΠΊΡ‚ΠΈ
  • ОбикновСно Π½Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° тяло Π½Π° заявката

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

DELETE /api/users/123 HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Π‘Π»ΡƒΡ‡Π°ΠΈ Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°: ΠŸΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° потрСбитСлски Π°ΠΊΠ°ΡƒΠ½Ρ‚ΠΈ, ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π½Π° записи, почистванС Π½Π° рСсурси.

PATCH β€” Частична актуализация Π½Π° рСсурс

Π¦Π΅Π»: ΠŸΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° частични ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ рСсурс, Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ само Π½Π° посочСнитС ΠΏΠΎΠ»Π΅Ρ‚Π°.

Π₯арактСристики:

  • НС Π΅ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π΅Π½ β€” Π² зависимост ΠΎΡ‚ рСализацията, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΈΡ‚Π΅ повиквания ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠΌΠ°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΅Ρ„Π΅ΠΊΡ‚ΠΈ
  • По-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π΅Π½ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° чСстотната Π»Π΅Π½Ρ‚Π° ΠΎΡ‚ PUT Π·Π° ΠΌΠ°Π»ΠΊΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

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

PATCH /api/users/123 HTTP/1.1
Host: api.example.com
Content-Type: application/json
Content-Length: 34

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

Π‘Π»ΡƒΡ‡Π°ΠΈ Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°: АктуализиранС Π½Π° Π΅Π΄Π½ΠΎ ΠΏΠΎΠ»Π΅ (Π½Π°ΠΏΡ€. ΠΈΠΌΠ΅ΠΉΠ» адрСс), ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° Ρ„Π»Π°Π³ Π½Π° статус.

Π”Ρ€ΡƒΠ³ΠΈ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅Π»Π½ΠΈ HTTP ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ

ΠœΠ΅Ρ‚ΠΎΠ΄Π¦Π΅Π»
HEADΠ‘ΡŠΡ‰ΠΎΡ‚ΠΎ ΠΊΠ°Ρ‚ΠΎ GET Π½ΠΎ Π²Ρ€ΡŠΡ‰Π° само Π·Π°Π³Π»Π°Π²ΠΊΠΈ, Π±Π΅Π· тяло β€” ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° рСсурс ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ
OPTIONSΠ’Ρ€ΡŠΡ‰Π° HTTP ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ΠΈ ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€Π° Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ URL β€” ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° сС Π² CORS preflight заявки
CONNECTУстановява Ρ‚ΡƒΠ½Π΅Π» към ΡΡŠΡ€Π²ΡŠΡ€Π° (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° сС Π·Π° HTTPS Ρ‡Ρ€Π΅Π· прокси)
TRACEΠžΡ‚Ρ€Π°Π·ΡΠ²Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π°Ρ‚Π° заявка ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ към ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° β€” Π³Π»Π°Π²Π½ΠΎ Π·Π° диагностични Ρ†Π΅Π»ΠΈ

ΠŸΡ€Π°Π²Π΅Π½Π΅ Π½Π° HTTP заявки Π² Linux: Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ

Linux ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π±ΠΎΠ³Π°Ρ‚Π° СкосистСма ΠΎΡ‚ инструмСнти Π·Π° командния Ρ€Π΅Π΄ Π·Π° създаванС, ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ ΠΈ Π°Π½Π°Π»ΠΈΠ· Π½Π° HTTP заявки. Π•Ρ‚ΠΎ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ всСки администратор ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ трябва Π΄Π° Π·Π½Π°Π΅.

1. curl β€” ШвСйцарския Π½ΠΎΠΆ Π½Π° HTTP

curl Π΅ Π½Π°ΠΉ-ΡˆΠΈΡ€ΠΎΠΊΠΎ използваният инструмСнт Π·Π° командния Ρ€Π΅Π΄ Π·Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΏΠΎ HTTP, HTTPS, FTP ΠΈ дСсСтки Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ. Π’ΠΎΠΉ Π΅ прСдинсталиран Π½Π° практичСски всяко Linux Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ Π΅ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌ Π·Π° тСстванС Π½Π° API, скриптванС ΠΈ автоматизация.

Основна GET заявка:

curl -X GET https://api.example.com/users

GET заявка с ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π΅Π½ ΠΈΠ·Ρ…ΠΎΠ΄ (ΠΏΠΎΠΊΠ°Π·Π²Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈ):

curl -v https://api.example.com/users

POST заявка с JSON тяло:

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

PUT заявка Π·Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° рСсурс:

curl -X PUT https://api.example.com/users/123 
  -H "Content-Type: application/json" 
  -H "Authorization: Bearer YOUR_TOKEN" 
  -d '{"name": "Jane Doe", "email": "jane@example.com"}'

DELETE заявка:

curl -X DELETE https://api.example.com/users/123 
  -H "Authorization: Bearer YOUR_TOKEN"

PATCH заявка:

curl -X PATCH https://api.example.com/users/123 
  -H "Content-Type: application/json" 
  -d '{"email": "jane.doe@example.com"}'

Π—Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ във Ρ„Π°ΠΉΠ»:

curl -o output.html https://www.example.com

Автоматично слСдванС Π½Π° прСнасочвания:

curl -L https://www.example.com

ΠšΠ»ΡŽΡ‡ΠΎΠ²ΠΈ curl Ρ„Π»Π°Π³ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° Π·Π½Π°Π΅Ρ‚Π΅:

ЀлагОписаниС
-XΠžΠΏΡ€Π΅Π΄Π΅Π»Ρ HTTP ΠΌΠ΅Ρ‚ΠΎΠ΄Π°
-HДобавя Π·Π°Π³Π»Π°Π²ΠΊΠ° Π½Π° заявката
-dΠ˜Π·ΠΏΡ€Π°Ρ‰Π° Π΄Π°Π½Π½ΠΈ Π² тялото Π½Π° заявката
-oΠ—Π°ΠΏΠ°Π·Π²Π° ΠΈΠ·Ρ…ΠΎΠ΄Π° във Ρ„Π°ΠΉΠ»
-vАктивира ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ (ΠΏΠΎΠΊΠ°Π·Π²Π° пълна заявка/ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€)
-IΠ˜Π·Π²Π»ΠΈΡ‡Π° само Π·Π°Π³Π»Π°Π²ΠΊΠΈ (HEAD заявка)
-LΠ‘Π»Π΅Π΄Π²Π° HTTP прСнасочвания
-uΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Ρ потрСбитСлско ΠΈΠΌΠ΅ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π° Π·Π° Π±Π°Π·ΠΎΠ²Π° аутСнтификация
--insecureΠŸΡ€ΠΎΠΏΡƒΡΠΊΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π½Π° SSL сСртификата (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ само Π·Π° тСстванС)

2. wget β€” Π˜Π·Ρ‚Π΅Π³Π»ΡΠ½Π΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ страници

wget Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π³Π»Π°Π²Π½ΠΎ Π·Π° изтСглянС Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΎΠ³Π»Π΅Π΄Π°Π»ΠΈΡ€Π°Π½Π΅ Π½Π° уСбсайтовС. ΠœΠ°ΠΊΠ°Ρ€ Ρ‡Π΅ Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ унивСрсалСн ΠΎΡ‚ curl Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с API, Ρ‚ΠΎΠΉ ΠΎΡ‚Π»ΠΈΡ‡Π°Π²Π° ΠΏΡ€ΠΈ рСкурсивни изтСгляния ΠΈ възобновяванС Π½Π° ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΈ трансфСри.

Π˜Π·Ρ‚Π΅Π³Π»ΡΠ½Π΅ Π½Π° Ρ„Π°ΠΉΠ»:

wget https://www.example.com/files/archive.zip

Π’ΡŠΠ·ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ изтСглянС:

wget -c https://www.example.com/files/large-file.iso

Π˜Π·Ρ‚Π΅Π³Π»ΡΠ½Π΅ Π½Π° Ρ„Π°ΠΉΠ» Π² Ρ„ΠΎΠ½ΠΎΠ² Ρ€Π΅ΠΆΠΈΠΌ:

wget -b https://www.example.com/files/large-file.iso

ΠžΠ³Π»Π΅Π΄Π°Π»ΠΈΡ€Π°Π½Π΅ Π½Π° цял уСбсайт:

wget --mirror --convert-links --adjust-extension --page-requisites https://www.example.com

Π˜Π·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° POST заявка с wget:

wget --post-data='{"name":"John"}' 
  --header='Content-Type: application/json' 
  -O response.json 
  https://api.example.com/users

3. HTTPie β€” HTTP ΠΊΠ»ΠΈΠ΅Π½Ρ‚, приятСлски настроСн към Ρ‡ΠΎΠ²Π΅ΠΊΠ°

HTTPie Π΅ ΠΌΠΎΠ΄Π΅Ρ€Π΅Π½, ΡƒΠ΄ΠΎΠ±Π΅Π½ Π·Π° потрСбитСля HTTP ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π·Π° командния Ρ€Π΅Π΄, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ взаимодСйствиСто с API възмоТно Π½Π°ΠΉ-ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ. НСговия чист синтаксис ΠΈ Ρ†Π²Π΅Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½ ΠΈΠ·Ρ…ΠΎΠ΄ Π³ΠΎ правят Π»ΡŽΠ±ΠΈΠΌΠ΅Ρ† Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅.

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅ Π½Π° HTTPie:

# Debian/Ubuntu
sudo apt install httpie

# RHEL/CentOS/Fedora
sudo dnf install httpie

GET заявка:

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

POST заявка с JSON (Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ опрСдСлянС Π½Π° Ρ‚ΠΈΠΏ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅):

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

PUT заявка с аутСнтификация:

http PUT https://api.example.com/users/123 
  Authorization:"Bearer YOUR_TOKEN" 
  name="Jane Doe"

DELETE заявка:

http DELETE https://api.example.com/users/123 
  Authorization:"Bearer YOUR_TOKEN"

HTTPie Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π° JSON ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ със синтактично ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ Π΄Π°Π»Π΅Ρ‡ ΠΏΠΎ-лСсно Π΄Π° сС Ρ‡Π΅Ρ‚Π°Ρ‚ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° API Π² сравнСниС с сурови curl ΠΈΠ·Ρ…ΠΎΠ΄.

4. Telnet β€” Π‘ΡƒΡ€ΠΎΠ²ΠΈ HTTP заявки Π·Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅

ΠœΠ°ΠΊΠ°Ρ€ Ρ‡Π΅ Π½Π΅ Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ Π·Π° производствСно ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅, telnet Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π΅Π½ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅Π½ инструмСнт Π·Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° HTTP заявка Π½Π° сурово TCP Π½ΠΈΠ²ΠΎ. Π’ΠΎΠΉ сС ΡΠ²ΡŠΡ€Π·Π²Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ към ΠΏΠΎΡ€Ρ‚ 80 ΠΈ Π²ΠΈ позволява Π΄Π° Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ HTTP заявки Ρ€ΡŠΡ‡Π½ΠΎ.

Π‘Π²ΡŠΡ€Π·Π²Π°Π½Π΅ към ΡΡŠΡ€Π²ΡŠΡ€:

telnet www.example.com 80

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ слСдната заявка (натиснСтС Enter Π΄Π²Π° ΠΏΡŠΡ‚ΠΈ слСд послСдния Ρ€Π΅Π΄):

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

Π©Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ сурови HTTP ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ статусСн Ρ€Π΅Π΄, Π·Π°Π³Π»Π°Π²ΠΊΠΈ ΠΈ тяло β€” Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊΠ°ΠΊΡ‚ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Π³ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°. Π’ΠΎΠ²Π° ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ Π΅ Π±Π΅Π·Ρ†Π΅Π½Π½ΠΎ Π·Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Π½Π° Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ Π½ΠΈΠ²ΠΎ.

> Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: Π—Π° HTTPS Π²Ρ€ΡŠΠ·ΠΊΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ openssl s_client вмСсто telnet, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ telnet Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΈ TLS ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π΅.

Π‘ΡƒΡ€ΠΎΠ²Π° HTTPS заявка с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° OpenSSL:

openssl s_client -connect www.example.com:443 -quiet

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

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

5. Python β€” Π‘ΠΊΡ€ΠΈΠΏΡ‚Π²Π°Π½Π΅ Π½Π° HTTP заявки

Π—Π° автоматизация ΠΈ скриптванС, Python Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° requests Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π½Π°ΠΉ-популярнитС инструмСнти Π·Π° ΠΏΡ€Π°Π²Π΅Π½Π΅ Π½Π° HTTP заявки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΎ Π² Linux.

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅ Π½Π° requests Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°:

pip install requests

GET заявка:

import requests

response = requests.get('https://api.example.com/users')
print(response.status_code)
print(response.json())

POST заявка:

import requests

payload = {"name": "John Doe", "email": "john@example.com"}
response = requests.post('https://api.example.com/users', json=payload)
print(response.status_code)
print(response.json())

АнализиранС Π½Π° HTTP Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π² Linux

ОсвСн ΠΏΡ€Π°Π²Π΅Π½Π΅Ρ‚ΠΎ Π½Π° заявки, Linux прСдоставя ΠΌΠΎΡ‰Π½ΠΈ инструмСнти Π·Π° улавянС ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° HTTP Ρ‚Ρ€Π°Ρ„ΠΈΠΊ β€” ΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½ΠΈ умСния Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° производитСлност ΠΈ Π°Π½Π°Π»ΠΈΠ· Π½Π° сигурност.

tcpdump β€” УлавянС Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ

tcpdump Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΎΡ‚ командния Ρ€Π΅Π΄, ΠΊΠΎΠΉΡ‚ΠΎ улавя суров ΠΌΡ€Π΅ΠΆΠΎΠ² Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. Π’ΠΎΠΉ Π΅ Π½Π°Π»ΠΈΡ†Π΅ Π½Π° практичСски всяка Linux систСма ΠΈ изисква root ΠΈΠ»ΠΈ sudo ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ.

УлавянС Π½Π° цСлия HTTP ΠΈ HTTPS Ρ‚Ρ€Π°Ρ„ΠΈΠΊ:

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

УлавянС Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ интСрфСйс ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π² Ρ„Π°ΠΉΠ»:

sudo tcpdump -i eth0 -w capture.pcap 'tcp port 80'

Π§Π΅Ρ‚Π΅Π½Π΅ Π½Π° Π·Π°ΠΏΠ°Π·Π΅Π½ Ρ„Π°ΠΉΠ» с улавянС:

sudo tcpdump -r capture.pcap

Π€ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΏΠΎ хост:

sudo tcpdump -i any host www.example.com

Wireshark β€” Анализ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ с GUI

Wireshark Π΅ стандартният Π² индустрията Π³Ρ€Π°Ρ„ΠΈΡ‡Π΅Π½ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° улавятС Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° вашия Linux ΡΡŠΡ€Π²ΡŠΡ€, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ tcpdump ΠΈ Π΄Π° Π³ΠΎ Π·Π°ΠΏΠ°Π·ΠΈΡ‚Π΅ Π² .pcap Ρ„Π°ΠΉΠ», слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄Π° Π³ΠΎ ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ Π² Wireshark Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π½Π° станция Π·Π° дълбок Π°Π½Π°Π»ΠΈΠ·.

Wireshark ви позволява да:

  • РСконструиратС пълни HTTP Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ΠΈ
  • Π€ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Ρ‚Π΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», IP, ΠΏΠΎΡ€Ρ‚ ΠΈΠ»ΠΈ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅
  • Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Ρ‚Π΅ тСсни мСста Π² производитСлност ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ
  • ΠžΡ‚ΠΊΡ€ΠΈΠΉΡ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΈΠ»ΠΈ Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ

ngrep β€” Network Grep

ngrep ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π° ΠΌΠΎΡ‰Ρ‚Π° Π½Π° tcpdump с grep-стилово ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ улСснява Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ Π½ΠΈΠ·ΠΎΠ²Π΅ Π² мрСТовия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ.

Π’ΡŠΡ€ΡΠ΅Π½Π΅ Π½Π° HTTP GET заявки:

sudo ngrep -d any 'GET' 'tcp port 80'

Π’ΡŠΡ€ΡΠ΅Π½Π΅ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ хост Π² Ρ‚Ρ€Π°Ρ„ΠΈΠΊ:

sudo ngrep -d any 'example.com' 'tcp port 80 or tcp port 443'

HTTP Status Codes: Understanding Server Responses

ΠšΠΎΠ³Π°Ρ‚ΠΎ ΡΠ΅Ρ€Π²ΡŠΡ€ΡŠΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ Π²Π°ΡˆΠ°Ρ‚Π° HTTP заявка, Ρ‚ΠΎΠΉ отговаря със status code, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ ΠΊΠ°Π·Π²Π° Π΄Π°Π»ΠΈ заявката Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½Π°, Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½Π° ΠΈΠ»ΠΈ изисква Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ дСйствиС. Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½ΠΎ Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ.

Code RangeCategoryCommon Examples
1xxInformational100 Continue, 101 Switching Protocols
2xxSuccess200 OK, 201 Created, 204 No Content
3xxRedirection301 Moved Permanently, 302 Found, 304 Not Modified
4xxClient Error400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found
5xxServer Error500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable

Π—Π°Ρ‰ΠΈΡ‚Π° HTTP заявки: HTTPS ΠΈ SSL/TLS

Π’ производствСни срСди цСлият HTTP Ρ‚Ρ€Π°Ρ„ΠΈΠΊ трябва Π΄Π° бъдС ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° HTTPS (HTTP Π½Π°Π΄ TLS/SSL). Π˜Π·ΠΏΡ€Π°Ρ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ, API Ρ‚ΠΎΠΊΠ΅Π½ΠΈ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ чувствитСлни Π΄Π°Π½Π½ΠΈ ΠΏΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ HTTP Π³ΠΈ ΠΈΠ·Π»ΠΎΠΆΠ°Π²Π° Π½Π° ΠΏΡ€ΠΈΡ…Π²Π°Ρ‰Π°Π½Π΅ ΠΎΡ‚ всСки Π½Π° ΠΏΡŠΡ‚Ρ Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с curl, Π²ΠΈΠ½Π°Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ https:// URL адрСси. Ако срСщнСтС SSL Π³Ρ€Π΅ΡˆΠΊΠΈ Π² сСртификата ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π° Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° с --insecure, Π½ΠΎ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ ΠΏΡ€Π°Π²Π΅Ρ‚Π΅ Ρ‚ΠΎΠ²Π° Π² производство.

Π—Π° Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ SSL сСртификата Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ ΠΎΡ‚ командния Ρ€Π΅Π΄:

curl -vI https://www.example.com 2>&1 | grep -A 10 "SSL certificate"

Или ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ OpenSSL Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ:

openssl s_client -connect www.example.com:443 -showcerts

Ако хостиратС ΡƒΠ΅Π± прилоТСния ΠΈ ΠΈΠΌΠ°Ρ‚Π΅ Π½ΡƒΠΆΠ΄Π° Π΄Π° Π³ΠΈ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚Π΅ с Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ SSL сСртификат, AlexHost ΠΏΡ€Π΅Π΄Π»Π°Π³Π° SSL сСртификати, ΠΊΠΎΠΈΡ‚ΠΎ са лСсни Π·Π° инсталиранС ΠΈ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΈ със всички основни ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Apache, Nginx ΠΈ LiteSpeed.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΈ случаи Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π·Π° Linux HTTP инструмСнти

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° Π·Π΄Ρ€Π°Π²Π΅Ρ‚ΠΎ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ curl Π² cron job ΠΈΠ»ΠΈ скрипт Π·Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³, Π·Π° Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ Π΄Π°Π»ΠΈ Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ отговаря ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ:

#!/bin/bash
STATUS=$(curl -o /dev/null -s -w "%{http_code}" https://www.example.com/health)
if [ "$STATUS" != "200" ]; then
  echo "ALERT: Server returned HTTP $STATUS" | mail -s "Health Check Failed" admin@example.com
fi

ВСстванС Π½Π° API ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

ΠŸΡ€ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ ΠΈΠ»ΠΈ отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² REST API Π½Π° вашия ΡΡŠΡ€Π²ΡŠΡ€, curl ΠΈ HTTPie Π²ΠΈ позволяват Π΄Π° тСстватС всяка ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Π±Π΅Π· Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ GUI инструмСнт ΠΊΠ°Ρ‚ΠΎ Postman.

АвтоматизиранС Π½Π° изтСгляния Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ wget ΠΈΠ»ΠΈ curl Π² shell скриптовС, Π·Π° Π΄Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ изтСглянСто Π½Π° софтуСрни ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈΠ»ΠΈ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΈ копия ΠΎΡ‚ ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ.

ΠžΡ‚ΡΡ‚Ρ€Π°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² конфигурацията Π½Π° ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€Π°

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ curl -v Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΎΡ‡Π½ΠΈΡ‚Π΅ Π·Π°Π³Π»Π°Π²ΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π²Π°ΡˆΠΈΡΡ‚ ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ Π²Ρ€ΡŠΡ‰Π° β€” ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° CORS Π·Π°Π³Π»Π°Π²ΠΊΠΈ, ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅, Π·Π°Π³Π»Π°Π²ΠΊΠΈ Π·Π° сигурност (ΠΊΠ°Ρ‚ΠΎ Strict-Transport-Security) ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ прСнасочванС.

curl -v -I https://www.example.com 2>&1 | grep -E "< (HTTP|Server|X-|Strict|Content)"

Π˜Π·Π±ΠΎΡ€ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π½Π°Ρ‚Π° хостинг срСда Π·Π° ΡƒΠ΅Π± Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈΡ‚Π΅, описани Π² Ρ‚ΠΎΠ²Π° Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ, са Π½Π°ΠΉ-ΠΌΠΎΡ‰Π½ΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ°Ρ‚Π΅ пълСн ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π°Π΄ Π²Π°ΡˆΠ°Ρ‚Π° ΡΡŠΡ€Π²ΡŠΡ€Π½Π° срСда. План Π·Π° VPS Hosting Π²ΠΈ Π΄Π°Π²Π° root Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Linux ΡΡŠΡ€Π²ΡŠΡ€, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° инсталиратС всСки инструмСнт, Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ вашия ΠΌΡ€Π΅ΠΆΠΎΠ² стСк ΠΈ Π΄Π° стартиратС пСрсонализирани скриптовС β€” ΠΊΠΎΠ΅Ρ‚ΠΎ Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ ΠΈΠ΄Π΅Π°Π»Π½Π°Ρ‚Π° срСда Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ ΠΈ систСмни администратори, ΠΊΠΎΠΈΡ‚ΠΎ работят ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎ с HTTP.

Π—Π° Π΅ΠΊΠΈΠΏΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ°Ρ‚ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ максимална производитСлност ΠΈ посвСтСни рСсурси Π·Π° прилоТСния с висок Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Π½Π·ΠΈΠ²Π½ΠΈ API Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ натоварвания, Dedicated Servers осигуряват Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°Ρ‚Π° суровина ΠΈ изолация. И Π°ΠΊΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚Π΅ управлявана срСда с Π³Ρ€Π°Ρ„ΠΈΡ‡Π΅Π½ интСрфСйс, VPS с cPanel ΠΏΡ€Π΅Π΄Π»Π°Π³Π° удобството Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ ΠΏΠ°Π½Π΅Π», ΠΊΠ°Ρ‚ΠΎ Π·Π°ΠΏΠ°Π·Π²Π° Π³ΡŠΠ²ΠΊΠ°Π²ΠΎΡΡ‚Ρ‚Π° Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ частСн ΡΡŠΡ€Π²ΡŠΡ€.

Π—Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΡ‰ΠΎ изискват профСсионална ΠΈΠΌΠ΅ΠΉΠ» инфраструктура, Email Hosting Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°, Ρ‡Π΅ Π²Π°ΡˆΠΈΡ‚Π΅ трансакционни ΠΈ бизнСс ΠΈΠΌΠ΅ΠΉΠ»ΠΈ сС доставят Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎ, с ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΈ SPF, DKIM ΠΈ DMARC ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π΄ΠΎΠΏΡŠΠ»Π²Π°Ρ‚ HTTP комуникацията Π½Π° Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

РСзюмС: Π‘ΡŠΡ€Π· справочник Π·Π° HTTP заявки

ΠœΠ΅Ρ‚ΠΎΠ΄Π˜Π΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π΅Π½Π˜ΠΌΠ° Ρ‚ΡΠ»ΠΎΠžΡΠ½ΠΎΠ²Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°
GETΠ”Π°ΠΠ΅Π˜Π·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ
POSTΠΠ΅Π”Π°Π‘ΡŠΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° рСсурс / ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ
PUTДаДаЗамяна Π½Π° рСсурс
PATCHНСДаЧастично Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° рСсурс
DELETEΠ”Π°ΠΠ΅ΠŸΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° рСсурс
HEADΠ”Π°ΠΠ΅ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° само Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈ
OPTIONSΠ”Π°ΠΠ΅ΠžΡ‚ΠΊΡ€ΠΈΡ‚ΠΈΠ΅ Π½Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ

Linux инструмСнти с Π΅Π΄ΠΈΠ½ ΠΏΠΎΠ³Π»Π΅Π΄:

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΠ°ΠΉ-Π΄ΠΎΠ±Ρ€Π΅ Π·Π°
curlВСстванС Π½Π° API, скриптванС, пълСн HTTP ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»
wgetΠ˜Π·Ρ‚Π΅Π³Π»ΡΠ½Π΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΎΠ³Π»Π΅Π΄Π°Π»Π½ΠΎ ΠΊΠΎΠΏΠΈΡ€Π°Π½Π΅ Π½Π° уСбсайтовС
httpieВзаимодСйствиС с API, ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ
telnet / openssl s_clientΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π° сурови ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ ΠΈ отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ
tcpdump / ngrepУлавянС ΠΈ Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ² Ρ‚Ρ€Π°Ρ„ΠΈΠΊ
WiresharkΠ”ΡŠΠ»Π±ΠΎΠΊΠ° инспСкция Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΈ визуализация
Python requestsΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½Π° HTTP автоматизация

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

ΠžΠ²Π»Π°Π΄ΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° HTTP заявки Π² Linux Π΅ основно ΡƒΠΌΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄Π°Π²Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ Π² ΡƒΠ΅Π± Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°, интСграцията Π½Π° API, администриранСто Π½Π° систСми ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° сигурността. Π Π°Π·Π±ΠΈΡ€Π°ΠΉΠΊΠΈ структурата Π½Π° HTTP ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π°, сСмантиката Π½Π° всСки HTTP ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° богатия Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ инструмСнти Π½Π° Linux β€” ΠΎΡ‚ curl ΠΈ wget Π΄ΠΎ tcpdump ΠΈ Wireshark β€” ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚Π΅ ΠΏΡ€Π΅Ρ†ΠΈΠ·Π΅Π½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π°Π΄ Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Π²Π°ΡˆΠΈΡ‚Π΅ систСми ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠΈΡ€Π°Ρ‚ с ΡƒΠ΅Π±.

НСзависимо Π΄Π°Π»ΠΈ строитС RESTful API, отстраняватС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° инфраструктурата ΠΈΠ»ΠΈ Π½Π°ΡƒΡ‡Π°Π²Π°Ρ‚Π΅ ΠΊΠ°ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», знанията Π² Ρ‚ΠΎΠ²Π° Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ Π²ΠΈ Π΄Π°Π²Π°Ρ‚ солидна, ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½Π° основа. ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°ΠΉΡ‚Π΅ Ρ‚Π΅Π·ΠΈ умСния с Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Linux VPS Hosting срСда, ΠΈ ΠΈΠΌΠ°Ρ‚Π΅ всичко Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π·Π° Π΄Π° строитС, тСстватС ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚Π΅ ΡƒΠ΅Π± прилоТСния с увСрСност.