Π Π°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° 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.12. ΠΠ°Π³Π»Π°Π²ΠΊΠΈ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ°
ΠΠ°Π³Π»Π°Π²ΠΊΠΈΡΠ΅ Π½ΠΎΡΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ Π·Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ°. Π’Π΅ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠ°Ρ ΡΡΡΠ²ΡΡΠ° Π·Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ, ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠΈΡΠ΅Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π½ΠΈΡ Π·Π° ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅. ΠΡΡΠΊΠ° Π·Π°Π³Π»Π°Π²ΠΊΠ° Π΅ Π΄Π²ΠΎΠΉΠΊΠ° ΠΊΠ»ΡΡ-ΡΡΠΎΠΉΠ½ΠΎΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π° Ρ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΠ΅.
Π§Π΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΈ Π·Π°Π³Π»Π°Π²ΠΊΠΈ ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ ΡΠ΅Π»ΠΈ:
| ΠΠ°Π³Π»Π°Π²ΠΊΠ° | Π¦Π΅Π» |
|---|---|
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-alive3. Π’ΡΠ»ΠΎ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ°
ΠΠ΅ Π²ΡΠΈΡΠΊΠΈ 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/usersGET Π·Π°ΡΠ²ΠΊΠ° Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π΅Π½ ΠΈΠ·Ρ ΠΎΠ΄ (ΠΏΠΎΠΊΠ°Π·Π²Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈ):
curl -v https://api.example.com/usersPOST Π·Π°ΡΠ²ΠΊΠ° Ρ 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/users3. HTTPie β HTTP ΠΊΠ»ΠΈΠ΅Π½Ρ, ΠΏΡΠΈΡΡΠ΅Π»ΡΠΊΠΈ Π½Π°ΡΡΡΠΎΠ΅Π½ ΠΊΡΠΌ ΡΠΎΠ²Π΅ΠΊΠ°
HTTPie Π΅ ΠΌΠΎΠ΄Π΅ΡΠ΅Π½, ΡΠ΄ΠΎΠ±Π΅Π½ Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ HTTP ΠΊΠ»ΠΈΠ΅Π½Ρ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Ρ API Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉ-ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ. ΠΠ΅Π³ΠΎΠ²ΠΈΡ ΡΠΈΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈ ΡΠ²Π΅ΡΠΈΠ·ΠΈΡΠ°Π½, ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½ ΠΈΠ·Ρ
ΠΎΠ΄ Π³ΠΎ ΠΏΡΠ°Π²ΡΡ Π»ΡΠ±ΠΈΠΌΠ΅Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° HTTPie:
# Debian/Ubuntu
sudo apt install httpie
# RHEL/CentOS/Fedora
sudo dnf install httpieGET Π·Π°ΡΠ²ΠΊΠ°:
http GET https://api.example.com/usersPOST Π·Π°ΡΠ²ΠΊΠ° Ρ 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 requestsGET Π·Π°ΡΠ²ΠΊΠ°:
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.comWireshark β ΠΠ½Π°Π»ΠΈΠ· Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Ρ 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 Range | Category | Common Examples |
|---|---|---|
1xx | Informational | 100 Continue, 101 Switching Protocols |
2xx | Success | 200 OK, 201 Created, 204 No Content |
3xx | Redirection | 301 Moved Permanently, 302 Found, 304 Not Modified |
4xx | Client Error | 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found |
5xx | Server Error | 500 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 ΡΡΠ΅Π΄Π°, ΠΈ ΠΈΠΌΠ°ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, Π·Π° Π΄Π° ΡΡΡΠΎΠΈΡΠ΅, ΡΠ΅ΡΡΠ²Π°ΡΠ΅ ΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠ΅ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΡΠ²Π΅ΡΠ΅Π½ΠΎΡΡ.
ΠΎΡ Π²ΡΠΈΡΠΊΠΈ Ρ
ΠΎΡΡΠΈΠ½Π³ ΡΡΠ»ΡΠ³ΠΈ