curl Π·Π°ΠΏΡΡΠΊ php ΡΠΊΡΠΈΠΏΡΠ°
PHP CURL β ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠ΅Π΄Π»Π°Π³Π°Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ PHP, Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π·Π°ΡΡΠΎΠ½ΡΡΡ ΡΠ΅ΠΌΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ CURL, Ρ.Π΅. Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌ ΠΈΠ· ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠ° PHP.
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ curl Ρ ΠΎΡΡ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΡΠ·ΡΠΊ PHP ΠΌΡ Ρ ΠΠ°ΠΌΠΈ ΡΠΆΠ΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅ ΠΏΡΠΎ Π²ΡΠ³ΡΡΠ·ΠΊΡ Π² Excel Π½Π° PHP ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π½Π° PHP, Π° ΡΠ΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΡΡΠ»Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ Π½Π° PHP.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ CURL?
CURL β ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΉ PHP, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ»Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, HTTP, ΠΈΠ· PHP ΡΠΊΡΠΈΠΏΡΠ°. CURL ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ ΠΊΠ°ΠΊ HTTP, HTTPS, FTP ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. ΠΠΎΡΡΠ»Π°ΡΡ HTTP Π·Π°ΠΏΡΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ GET, POST, PUT.
CURL ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ Π² ΡΠ»ΡΡΠ°ΡΡ ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ·Π²Π°ΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΡΠΊΡΠΈΠΏΡ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ HTML ΠΊΠΎΠ΄ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ, Π² ΠΎΠ±ΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½ΠΎ ΡΠΌΡΡΠ» ΠΎΠ΄ΠΈΠ½ ΡΡΠΎ ΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠ»Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ°.
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ CURL Π² PHP
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ CURL Π΅Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅! Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ PHP 5.4.39 Π½Π° Windows 7, Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Web-ΡΠ΅ΡΠ²Π΅ΡΠ° Ρ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΡΡΡΠΏΠ°ΡΡ Apache 2.2.22.
ΠΠ΅ΡΠ²ΠΎΠ΅ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ssleay32.dll, libeay32.dll, libssh2.dll ΠΎΠ½ΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Ρ PHP, Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Windows, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π² C:\Windows\System32.
ΠΠ°ΡΠ΅ΠΌ Π² php.ini ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ php_curl.dll, Ρ.Π΅. ΡΠ°ΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π°
ΠΡΠ΅, ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ Apache, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ phpinfo() ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Ρ ΠΠ°Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ ΡΠ°Π·Π΄Π΅Π» curl
ΠΡΠ»ΠΈ Π΅Π³ΠΎ Π½Π΅Ρ, ΡΠΎ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ, ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π΅ Π·Π°Π³ΡΡΠ·ΠΈΠ»Π°ΡΡ, ΡΠ°ΠΌΠ°Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π° ΡΡΠΎΠ³ΠΎ Π½Π΅Π±ΡΠ»ΠΈ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Ρ Π²ΡΡΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ DLL Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Windows.
ΠΡΠΈΠΌΠ΅Ρ CURL β Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π½Π° ΡΠΊΡΠ°Π½
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΠΎΡΠΈΠΌ ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ HTTP ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ GET ΠΈ Π²ΡΠ²Π΅Π΄Π΅ΠΌ Π΅Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π½Π° ΡΠΊΡΠ°Π½.
Π£ Π½Π°Ρ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ test Π² Π½Π΅ΠΌ 2 PHP ΡΠ°ΠΉΠ»Π° ΡΡΠΎ test_curl.php ΠΈ test.php, Π³Π΄Π΅ test_curl.php ΠΈ Π΅ΡΡΡ ΡΠΊΡΠΈΠΏΡ Π³Π΄Π΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ curl, Π° test.php ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΡΠΊΡΠΈΠΏΡ ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π²ΡΠ·ΡΠ²Π°ΡΡ. ΠΠΎΠ΄ Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΡΠΎΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π».
ΠΠΎΠ΄ test_curl.php
ΠΠΎΠ΄ test.php
Π ΠΈΡΠΎΠ³Π΅ Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ test_curl.php Ρ ΠΠ°Ρ Π²ΡΠ²Π΅Π΄Π΅ΡΡΡ Π½Π° ΡΠΊΡΠ°Π½ Π½Π°Π΄ΠΏΠΈΡΡ Β«ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ 1Β», ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² id (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ 2 ΠΈΠ»ΠΈ 3).
ΠΡΠΈΠΌΠ΅Ρ CURL β Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΡΠΊΡΠΈΠΏΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
Π‘Π΅ΠΉΡΠ°Ρ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π²ΡΠ·Π²Π°ΡΡ ΡΠΊΡΠΈΠΏΡ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΎΠΌ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ POST. ΠΠ°Π·Π²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΎΡΡΠ°Π²ΠΈΠΌ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΆΠ΅.
ΠΠΎΠ΄ test_curl.php
ΠΠΎΠ΄ test.php
Π Π΅ΡΠ»ΠΈ ΠΌΡ Π·Π°ΠΏΡΡΡΠΈΠΌ test_curl.php ΡΠΎ Π½Π° ΡΠΊΡΠ°Π½ Ρ Π½Π°Ρ Π²ΡΠ²Π΅Π΄Π΅ΡΡΡ 111, Ρ.Π΅. 1.11 ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡ ΡΠΊΡΠΈΠΏΡΡ, ΡΠΌΠ½ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π½Π° 100.
Π ΡΠ΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΡΠ½ΠΊΡΠΈΡΡ ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°Ρ ΠΊ Π½ΠΈΠΌ.
Π§Π°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ CURL ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΡΡΠ½ΠΊΡΠΈΡΡ CURL ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°Ρ ΠΊ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅ PHP β php.net
ΠΠ° ΡΡΠΎΠΌ Π²ΡΠ΅, Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ Ρ Π΄ΡΠΌΠ°Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π£Π΄Π°ΡΠΈ!
cURL Π² PHP: ΠΏΡΠΈΠΌΠ΅ΡΡ POST, GET Π·Π°ΠΏΡΠΎΡΠΎΠ² Ρ headers, cookie, JSON ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡΡ
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Ρ cURL, ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ POST, GET ΠΈ Ρ.Π΄. Π·Π°ΠΏΡΠΎΡΠΎΠ², ΡΠ°Π±ΠΎΡΡ Ρ cookie, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, JSON Π° ΡΠ°ΠΊΠΆΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΈ Π±ΡΠ΄ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ Π²Π°ΠΌ ΡΠ°Π±ΠΎΡΡ Ρ HTTP Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ.
GET Π·Π°ΠΏΡΠΎΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ cURL
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΠΎΡ, Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ curl_init(), Π° Π·Π°ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ Π΅Π³ΠΎ.
ΠΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΏΠΎ ΡΡΠΎΠΉ ΡΡΡΠ»ΠΊΠ΅. Π’Π°ΠΌ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΠΎΠΏΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ curl_setopt, Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ .
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ GET Π·Π°ΠΏΡΠΎΡΠ° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ cURL:
ΠΡΠ»ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅ΡΠ²Π΅Ρ Π²Π΅ΡΠ½Π΅Ρ Π½Π°ΠΌ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡ, ΡΠΎ ΠΌΡ ΠΏΠΎ Π½Π΅ΠΌΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ. Π ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡΠΎ Π±ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. Π§ΡΠΎΠ±Ρ cURL Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅Π» ΠΏΠΎ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡΡ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΠΏΡΠΈΡ CURLOPT_FOLLOWLOCATION.
Π‘ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠ΅ΠΉ ΡΠΊΡΠΈΠΏΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅Ρ ΠΏΠΎ Π²Π΅ΡΠ½ΡΠ²ΡΠ΅ΠΌΡΡΡ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡΡ ΠΈ Π²Π΅ΡΠ½Π΅Ρ ΠΎΡΠ²Π΅Ρ ΡΠΆΠ΅ Ρ ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ.
POST Π·Π°ΠΏΡΠΎΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ cURL
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΈΠΌ post Π·Π°ΠΏΡΠΎΡ Π½Π° Π°Π΄ΡΠ΅Ρ https://httpbin.org/anything
ΠΡΠ»ΠΈΡΠ½ΠΎ, Ρ GET ΠΈ POST Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ Π² cURL ΠΌΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠ²ΠΎΠΈΠ»ΠΈΡΡ. Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΡΡΠ»Π°ΡΡ Π² Π·Π°ΠΏΡΠΎΡΠ΅.
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΠΏΡΠΈΠΈ CURLOPT_HTTPHEADER Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΡΠ΅ ΡΠ·Π½Π°ΡΡ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ Π½ΡΠΆΠ½Π° ΡΡΠ° ΠΎΠΏΡΠΈΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ POST Π·Π°ΠΏΡΠΎΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JSON
cURL: POST Π·Π°ΠΏΡΠΎΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JSON
ΠΡΠ»ΠΈΡΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ JSON Π·Π°ΠΏΡΠΎΡΠ° ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ POST Π·Π°ΠΏΡΠΎΡΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ ΠΊΠΎΠ΄ΠΈΡΡΠ΅ΠΌ ΠΏΠΎΠ»Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ json_encode() Π Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Content-Type: application/json
cURL: GET Π·Π°ΠΏΡΠΎΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JSON
GET Π·Π°ΠΏΡΠΎΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JSON ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ POST Π·Π°ΠΏΡΠΎΡ, ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ CURLOPT_CUSTOMREQUEST ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π² ‘GET’
cURL ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΈΠ΄Ρ HTTP Π·Π°ΠΏΡΠΎΡΠΎΠ²: PUT, DELETE, HEAD, PATCH, OPTIONS, CONNECT ΠΈ Ρ.Π΄.
Π‘ΡΠΎΠΏ, ΠΠΌΠΈΡΡΠΈΠΉ, ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈ Π²ΡΠ΄ΡΠΌΡΠ²Π°ΡΡ Π²ΠΈΠ΄Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ²!
ΠΠΈΡΠ΅Π³ΠΎ Ρ Π½Π΅ Π²ΡΠ΄ΡΠΌΡΠ²Π°Ρ: HTTP ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΏΠΎΠ² HTTP Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΏΡΠΎΡΡΠΎ POST ΠΈ GET ΡΠ²Π»ΡΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΌΠΈ.
Π§ΡΠΎΠ±Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ PUT Π·Π°ΠΏΡΠΎΡ, Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΠΏΡΠΈΡ CURLOPT_PUT ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ, ΠΊΠ°ΠΊ ΠΈ CURLOPT_POST. ΠΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌ Π·ΠΎΠΎΠΏΠ°ΡΠΊΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠ²? Π Π°Π·Π²Π΅ Ρ cURL Π΅ΡΡΡ CURLOPT_DELETE ΠΈΠ»ΠΈ CURLOPT_HEAD? ΠΠ΅Ρ.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΈΠ΄Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π΅ΡΡΡ Π΄ΡΡΠ³Π°Ρ ΠΎΠΏΡΠΈΡ: CURLOPT_CUSTOMREQUEST
ΠΠΌΠ΅ΡΡΠΎ ΡΡΡΠΎΠΊΠΈ curl_setopt($curl, CURLOPT_POST, true); ΠΌΡ ΡΠ²Π½ΠΎ Π·Π°Π΄Π°Π΅ΠΌ ΠΈΠΌΡ Π·Π°ΠΏΡΠΎΡΠ° ΠΎΠΏΡΠΈΠ΅ΠΉ CURLOPT_CUSTOMREQUEST:
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΠΉ ΡΠΈΠΏ Π·Π°ΠΏΡΠΎΡΠ°.
ΠΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΎΡΠ²Π΅ΡΠ°
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ Π½Π°ΡΡΠΈΠ»ΠΈΡΡ ΠΏΠΎΡΡΠ»Π°ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ. Π‘Π°ΠΌΡΠΉ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠΈΠ½ΡΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ:
ΠΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ΅ΡΠΈΡΡ Π΄ΡΡΠ³ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΎΡΠ²Π΅ΡΠ°. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΎΠ½ΠΈ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ .
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, Ρ ΠΏΠΎΠΌΠΎΡΡΡ CURLINFO_HEADER_SIZE Π·Π°ΡΠ΅ΠΌ Π²ΡΡΠ΅Π·Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΈΠ· ΠΎΡΠ²Π΅ΡΠ°. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΊΡΠΈ ΠΈΠ»ΠΈ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡΠ°.
Π‘ΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ cURL
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΊΠ°ΡΠ°ΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ°ΠΉΠ» ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ ΡΡΠΎΡ ΡΠΏΠΎΡΠΎΠ±:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ file_get_contents Π΄Π»Ρ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠΎ ΡΠ°ΠΉΠ» ΡΠ½Π°ΡΠ°Π»Π° Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ, Π° ΠΏΠΎΡΠΎΠΌ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π½Π° Π΄ΠΈΡΠΊ. ΠΠΎΡΡΠΎΠΌΡ Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ, ΡΠΎ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ Π²Π°ΡΠ΅ΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ Π½Π΅ Ρ Π²Π°ΡΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ. Π’Π°ΠΊΠΆΠ΅ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ Π±ΡΠ΄Π΅Ρ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΠ΅Π»Π΅Π½ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
ΠΠ΄Π΅ΡΡ ΠΌΡ ΡΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ cURL Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ Π΅Π³ΠΎ Π½Π° Π΄ΠΈΡΠΊ. ΠΠ΅ ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± Π½Π΅ Π³ΠΎΠ΄ΠΈΡΡΡ Π΄Π»Ρ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΏΡΠΎΡΡΡΡ Π²Π΅Π± ΡΡΡΠ°Π½ΠΈΡΡ.
ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ cURL Π·Π°ΠΏΡΠΎΡΡ Π² PHP
ΠΠ»Ρ ΡΠ΅Π³ΠΎ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ? ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ URL Π°Π΄ΡΠ΅ΡΠΎΠ²:
Π Π΅ΡΠ»ΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π·Π°ΠΏΡΠΎΡΡ, ΡΠΎ Π²ΡΠΎΡΠΎΠΉ Π·Π°ΠΏΡΠΎΡ Π½Π°ΡΠ½Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅, Π° ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ ΡΠΊΡΠΈΠΏΡΠ°.
ΠΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ 3 Π·Π°ΠΏΡΠΎΡΠ° ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ? Π ΡΡΠΎΠΌ Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ curl_multi_
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΡΠΈΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π·Π°Π΄Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ curl Π·Π°ΠΏΡΠΎΡΠΎΠ². ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ 3 Π·Π°ΠΏΡΠΎΡΠ°.
Π’Π°ΠΊΠΈΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΡΡΡΠ΅Π΅ ΡΠ΅ΠΌ ΠΏΠΎΠΎΡΠ΅ΡΠ΅Π΄Π½ΡΠ΅.
cURL Π·Π°ΠΏΡΠΎΡΡ Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ cookie ΠΈΠ· ΡΠ°ΠΉΠ»Π°
cURL ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ cookie ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ cookie, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΡΠ²Π΅Ρ, ΡΠΎΡ ΡΠ°Π½ΡΡ ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
Π’Π΅ΠΏΠ΅ΡΡ cookie Ρ Π½Π°Ρ Ρ ΡΠ°Π½ΡΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ cookie.txt Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΠΎ ΡΠΊΡΠΈΠΏΡΠΎΠΌ (Π΅ΡΠ»ΠΈ Π²Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΠ»ΠΈ). ΠΡΠ»ΠΈ ΠΌΡ ΡΠΎΠ²Π΅ΡΡΠ°Π΅ΠΌ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ, ΡΠΎ cURL Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π±Π΅ΡΠ΅Ρ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ cookie Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±ΡΡΠ½ΡΠΉ Π±ΡΠ°ΡΠ·Π΅Ρ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π°Π²ΡΠΎΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠ΅Π°Π½Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ.
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° cookie Π±Π΅Π· ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΠΌΠΌΠΈΡΠ°ΡΠΈΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ cURL
ΠΠ½ΠΎΠ³Π΄Π° ΡΠ°ΠΉΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΌΡ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ, Π·Π°ΡΠΈΡΠ°ΡΡΡ ΠΎΡ ΠΏΠ°ΡΡΠΈΠ½Π³Π°. ΠΡΠ»ΠΈ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΏΡΠΎΡΠ΅Π½Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ Π·Π°ΡΠΈΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° User-Agent, ΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠΈΡΠ²ΠΎΡΠΈΡΡΡΡ, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΠΌΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΠΌ ΠΏΠΎΠ»ΡΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ΡΠ°ΠΉΡΠΎΠΌ ΡΠ΅ΡΠ΅Π· Π±ΡΠ°ΡΠ·Π΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΠ»Π°ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΈ cookie, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΡΡΠ»Π°Π΅Ρ Π±ΡΠ°ΡΠ·Π΅Ρ.
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΡΠ»Π°Π΅Ρ Chrome.
Π ΠΏΡΠΎΡΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ ΡΡΠΎΠ³ΠΎ Ρ Π²Π°ΡΠ°Π΅Ρ. ΠΠΎ Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π·Π°ΡΠΈΡΠ° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ javascript ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠΎΠ΅, ΡΠΎ Π·Π΄Π΅ΡΡ cURL Π±Π΅ΡΡΠΈΠ»Π΅Π½, ΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΠΈΠ±ΠΎ BAS Π»ΠΈΠ±ΠΎ Zennoposter. ΠΠΈΠ±ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΏΡΡΠ°ΡΡ ΡΡΠ°ΡΡΡΠ΅ Ρ PHP, ΡΠΎ Selenium.
ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΈ Π·Π½Π°Π½ΠΈΡ Π² ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΡΠ°Π²Π½ΡΡ ΡΠ΅Π»ΡΡ .
cURL Π·Π°ΠΏΡΠΎΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΠΊΡΠΈ
ΠΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΠ΅ΡΠ΅Π· proxy. ΠΡΠ»ΠΈ Π²Π°Ρ ΠΏΡΠΎΠΊΡΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ, ΡΠΎ ΡΠ°ΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΡΠΎΡΠΊΠΈ.
ΠΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ cURL
HTTP ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ
Π§ΡΠΎΠ±Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ cURL Π°Π²ΡΠΎΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Basic HTTP-Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΠΏΡΠΈΡ CURLOPT_USERPWD, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅Ρ Π½Π°Ρ Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ.
OAuth Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ
ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΠΎΡΠΌΡ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π½Π°ΠΌΠΈ Π·Π½Π°Π½ΠΈΡ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·ΠΈΡΡΠ΅ΠΌΡΡ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ°ΠΉΡΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΊΡΠ΄Π° ΡΠΎΡΠΌΠ° ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠ΄Π° ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅.
ΠΠΎΠΏΡΡΡΠΈΠΌ Π½Π° ΡΠ°ΠΉΡΠ΅ Π΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ ΡΠΎΡΠΌΠ°:
Π’ΠΎΠ³Π΄Π° Π½Π°Ρ cURL Π·Π°ΠΏΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ ΡΠ°ΠΊ:
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ²
ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ curl Π² PHP
Π Π²ΠΎΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ΅ΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ curl Π² PHP: https://incarnate.github.io/curl-to-php/
Π’Π°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΡΡΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π½Π° cURL Π² PHP Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΠΈΡ Π²ΡΡΡΠ½ΡΡ.
ΠΠ°ΠΉΡΡ Π°ΠΊ
Π ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ°, Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ΡΠ΅ΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠ»ΠΈΠΊΠ½ΡΡΡ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ ΠΈ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠΉ Π·Π°ΠΏΡΠΎΡ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ cURL, Π° ΠΏΠΎΡΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ° curl-to-php ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ Π·Π°ΠΏΡΠΎΡ Π² PHP. Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² cURL Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π»ΡΠ±ΠΎΠΉ Π·Π°ΠΏΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΡΠ»Π°Π΅Ρ Π²Π°Ρ Π±ΡΠ°ΡΠ·Π΅Ρ.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ cURL Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΡΠΎΡΠΈΡΡ: ΠΏΠΎΡΠ΅ΠΌΡ Ρ cURL ΡΠ°ΠΊΠΈΠ΅ ΠΊΡΠΈΠ²ΡΠ΅ ΠΈ ΡΡΡΠ°ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ? Π£ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π²Π·ΡΡΡ ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±Π΅ΡΡΠΊΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ cURL, ΡΡΠΎΠ±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π½Π΅ ΠΏΠΈΡΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΊΡΡΠΊΠΈ Π½Π΅ΠΊΡΠ°ΡΠΈΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π° ΠΏΠΈΡΠ°ΡΡ Π²ΡΠ΅ ΠΏΡΠΎΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊ:
Π ΡΡΠ°ΡΡΡΡ, ΡΠ°ΠΊΠ°Ρ ΠΎΠ±Π΅ΡΡΠΊΠ° ΡΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½Π° ΠΈ Π½Π°ΠΉΡΠΈ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π΄Π΅ΡΡ: https://github.com/php-curl-class/php-curl-class
ΠΡΠΎΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π΅Π΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ: composer require php-curl-class/php-curl-class ΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΠΉΡΠ΅ Ρ ΠΊΡΠΈΠ²ΡΠΌΠΈ ΠΊΡΡΠΊΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΊΠΎΠ²Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ cURL ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
POST ΠΈ GET Π·Π°ΠΏΡΠΎΡΡ Π±Π΅Π· cURL
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ PHP ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΡΠΎΡΡΠΎΠΉ GET Π·Π°ΠΏΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ file_get_contents.
ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ file_get_contents ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ POST Π·Π°ΠΏΡΠΎΡ.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΏΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π² stream_context_create, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΡΡΠΈΡΡ Π·Π΄Π΅ΡΡ: http://docs.php.net/manual/ru/context.http.php
ΠΡΡΠ³ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ Π² PHP
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ Π΅ΡΡΡ Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ: Guzzle
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π½Π° Guzzle
GET Π·Π°ΠΏΡΠΎΡΡ Π½Π° Guzzle
Π Π°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π° Guzzle
ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π½Π° Guzzle
ΠΡΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΠΎ ΡΠΈΡΠ°ΠΉΡΠ΅: Guzzle Quick Start
ΠΠΈΡΠΈΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π΅ΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΎΡΡΠ°Π»ΠΎΡΡ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ.
ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ°Π±ΠΎΡΡ Ρ URL
User Contributed Notes 27 notes
I wrote the following to see if a submitted URL has a valid http response code and also if it responds quickly.
Use the code like this:
Hey I modified script for php 5. Also I add support server auth. and fixed some little bugs on the script.
[EDIT BY danbrown AT php DOT net: Original was written by (unlcuky13 AT gmail DOT com) on 19-APR-09. The following note was included:
Below is the my way of using through PHP 5 objecte oriented encapsulation to make thing easier.]
I needed to use cURL in a php script to download data using not only SSL for the server authentication but also for client authentication.
On a default install of Fedora, setting up the proper cURL parameters, I would get an error:
$ php curl.php
Peer certificate cannot be authenticated with known CA certificates
The data on http://curl.haxx.se/docs/sslcerts.html was most useful. Indeed, toward to bottom it tells you to add a missing link inside /etc/pki/nssdb to use the ca-bundle.crt file. You do it so:
Now you can do client authentication, provided you have your certificate handy with:
In this example: http://php.net/manual/en/book.curl.php#102885 by «frank at interactinet dot com»
There’s a small bug in
?>
The code will immediately leave the function at the `return`, and pcntl_wait() will NEVER be executed, under any circumstances.
I can’t see any other issues with this function however.
Sharing is caring, handles included.
$user_agent = ‘Mozilla HotFox 1.0’ ;
CURL failed with PHP5.3 and Apache2.2.X on my Windows 7 machine.
It turns out that it’s not enough to copy the two dll’s mentioned (libeay32 and sslea32) from the php folder into your system32 folder. You HAVE TO UNBLOCK THESE TWO FILES.
Right click the file, select unblock, for each one. Then restart Apache.
Another very handy security feature added into Windows.
Here you have a function that I use to get the content of a URL using cURL:
You can use this class for fast entry
[EDIT BY danbrown AT php DOT net: Includes a bugfix provided by (manuel AT rankone DOT ch) on 24-NOV-09 to properly reference cURL initialization.]
curl_exec
(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)
curl_exec β ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ cURL
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ cURL.
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅Π°Π½ΡΠ° ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π²ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΊΠΎΠ΄Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ°, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠ΅ Π½Π° ΠΎΡΠΈΠ±ΠΊΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 404 Not found ), Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π½Π΅ΡΠ΄Π°ΡΠ°. Π€ΡΠ½ΠΊΡΠΈΡ curl_getinfo() ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ°ΠΊΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ.
Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
ΠΠ΅ΡΡΠΈΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
8.0.0 | handle ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ CurlHandle ; ΡΠ°Π½ΡΡΠ΅, ΠΎΠΆΠΈΠ΄Π°Π»ΡΡ ΡΠ΅ΡΡΡΡ ( resource ). |
ΠΡΠΈΠΌΠ΅ΡΡ
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ
// ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ cURL ΡΠ΅ΡΡΡΡΠ°
$ch = curl_init ();
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅
User Contributed Notes 23 notes
Just in case anyone is looking for a a couple of simple functions [to help automate cURL processes for POST and GET queries] I thought I’d post these.
Don’t disable SSL verification! You don’t need to, and it’s super easy to stay secure! If you found that turning off «CURLOPT_SSL_VERIFYHOST» and «CURLOPT_SSL_VERIFYPEER» solved your problem, odds are you’re just on a Windows box. Takes 2 min to solve the problem. Walkthrough here:
Be careful when using curl_exec() and the CURLOPT_RETURNTRANSFER option. According to the manual and assorted documentation:
Set CURLOPT_RETURNTRANSFER to TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
When retrieving a document with no content (ie. 0 byte file), curl_exec() will return bool(true), not an empty string. I’ve not seen any mention of this in the manual.
Example code to reproduce this:
// fictional URL to an existing file with no data in it (ie. 0 byte file)
$url = ‘http://www.example.com/empty_file.txt’ ;
Thank you for sharing this. I was wondering why my result was 1.
To get around this in a safe way, this is how I check if the result is valid.
$ch = curl_init(); /// initialize a cURL session
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$xmlResponse = curl_exec ($ch);
curl_close ($ch);
ΠΠ°ΠΊ Π·Π°ΠΏΡΡΡΠΈΡΡ curl ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π° PHP?
ΠΠΎ Π²ΡΠ΅ ΠΎΠ½ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ, Π° ΠΊΠ°ΠΊ ΡΠ°ΠΊΠΎΠ΅ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½Π° PHP?
ΠΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π½Π΅ ΡΡΠΎΠΈΡ Π³ΠΎΡΠΎΠ΄ΠΈΡΡ Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄Ρ.
Π ΡΠ°ΠΊ, ΠΊΠΎΠ»Π»Π΅Π³ΠΈ ΠΊΠΈΠ΄Π°Π»ΠΈ ΡΡΡΠ»ΠΈ Π²ΡΡΠ΅. Π’ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅ΠΉΡΠΈΠΉ ΠΌΠ°Π½ΡΠ°Π» ΠΏΠΎ ΠΎΠΏΡΠΈΡΠΌ: php.net/manual/ru/function.curl-setopt.php. ΠΡΠ΅ ΡΡΠΎ Ρ ΠΎΡΠΈΡΠ΅)
ΠΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ API ΠΠΈΡΡ Π°Π±Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎ https, ΠΎΠ½ Π½Π΅ ΠΏΡΡΠΊΠ°Π΅Ρ ΡΠ·Π΅ΡΠΎΠ² Π±Π΅Π· ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ². Π’ΠΎΠ³Π΄Π° ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΡ ΠΈΡ :
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, false);
ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΅ΡΠ΅ ΠΊΡΠΊΠΈ Π΅ΠΌΡ Π½ΡΠΆΠ½ΠΎ ΡΡΠ½ΡΡΡ, ΠΌΠΎΠΆΠ΅Ρ Π΅ΡΠ΅ ΡΡΠΎ-ΡΠΎ. ΠΡΠΆΠ½ΠΎ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ·ΡΡΠ°ΡΡ ΠΌΠ°Π½ΡΠ°Π»Ρ ΠΏΠΎ ΠΊΡΡΠ»Π΅ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ²ΠΎΠΈ CURLOPT ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅, ΡΠΈΡΡΠ°ΡΠΈΠΉ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅Ρ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅ΠΉ, ΠΈΠ±ΠΎ Π΄Π»Ρ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ° ΠΏΠΈΡΠ΅ΡΡΡ ΡΠ²ΠΎΠΉ ΡΠΊΡΠΈΠΏΡ. ΠΠΏΡΠΈΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΡΠ΅Π½, Ρ ΠΎΡΡ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π½ΡΠΆΠ½ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΡΡΠΊΠ°.