PHP CURL - fungsi dan contoh penggunaan. Curl_setopt - Menyetel opsi untuk sesi CURL Menggunakan curl dari baris perintah
CURL adalah paket perangkat lunak yang terdiri dari utilitas baris perintah dan perpustakaan untuk mentransfer data menggunakan sintaks URL.
CURL mendukung banyak protokol, termasuk DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet dan TFTP.
Unggah file terpisah
Perintah berikut akan mengambil konten URL dan menampilkannya pada output standar (yaitu terminal Anda).
Curl https://mi-al.ru/ > mi-al.htm % Total % Diterima % Xferd Rata-rata Kecepatan Waktu Waktu Waktu Saat Ini Dload Upload Total Dihabiskan Kecepatan Kiri 100 14378 0 14378 0 0 5387 0 --: --:- - 0:00:02 --:--:-- 5387
Menyimpan keluaran cURL ke fileKita dapat menyimpan hasil perintah curl ke file menggunakan opsi -o/-O.
- -Hai(o huruf kecil) hasilnya akan disimpan dalam file yang ditentukan pada baris perintah
- -HAI(huruf besar O) nama file akan diambil dari URL dan akan digunakan untuk menyimpan data yang diterima.
$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
Halaman gettext.html sekarang akan disimpan dalam file bernama 'mygettext.html'. Ketika curl dijalankan dengan opsi -o, ini akan menampilkan bilah kemajuan pengunduhan sebagai berikut.
% Total % Diterima % Xferd Rata-rata Kecepatan Waktu Waktu Waktu Saat Ini Dload Upload Total Dihabiskan Kecepatan Kiri 66 1215k 66 805k 0 0 33060 0 0:00:37 0:00:24 0:00:13 45900 100 1215k 100 1215k 0 0 39474 0 0:00:31 0:00:31 --:--:-- 68987
Saat Anda menggunakan curl -O (huruf besar O), konten itu sendiri akan disimpan ke file bernama 'gettext.html' di mesin lokal.
$ keriting -O http://www.gnu.org/software/gettext/manual/gettext.html
Catatan: Saat curl perlu menulis data ke terminal, curl akan menonaktifkan bilah kemajuan untuk menghindari kebingungan dengan data yang dicetak. Kita dapat menggunakan opsi '>'|'-o'|'-O' untuk mentransfer hasilnya ke file.
Mengambil banyak file sekaligus
Kita dapat mengunduh banyak file sekaligus dengan menentukan semua URL pada baris perintah.
Keriting -O URL1 -O URL2
Perintah di bawah ini akan mengunduh index.html dan gettext.html dan menyimpannya dengan nama yang sama di direktori saat ini.
Keriting -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html
Harap dicatat, ketika kami mengunduh banyak file dari server yang sama seperti yang ditunjukkan di atas, curl akan mencoba menggunakan kembali koneksi tersebut.
Ikuti header Lokasi HTTP dengan opsi -L
Secara default, CURL tidak mengikuti Lokasi HTTP di header (pengalihan). Ketika halaman web yang diminta dipindahkan ke lokasi lain, respons terkait akan dikirim di header Lokasi HTTP.
Misalnya, ketika seseorang mengetik google.com ke browser dari negaranya, mereka akan otomatis diarahkan ke 'google.co.xx'. Ini dilakukan berdasarkan header Lokasi HTTP seperti yang ditunjukkan di bawah ini.
Keriting https://www.google.com/?gws_rd=ssl
302 Pindah
Dokumen telah dipindahkan ke sini.Output di atas mengatakan bahwa dokumen yang diminta telah dipindahkan ke '
Tersembunyi dari tamu
.Anda dapat memberitahu curl untuk mengikuti pengalihan, ini dilakukan dengan menggunakan opsi -L seperti yang ditunjukkan di bawah ini. Sekarang kode sumber html akan diunduh
Tersembunyi dari tamu
.Keriting -L https://www.google.com/?gws_rd=ssl
Memperbarui unduhan sebelumnyaMenggunakan opsi -C Anda dapat melanjutkan pengunduhan yang terhenti karena alasan tertentu. Ini akan berguna ketika pengunduhan file besar gagal.
Jika kita mengatakan '-C -', maka curl akan mencari tempat untuk melanjutkan pengunduhan. Kita juga dapat menentukan '-C<смещение>'. Offset byte yang ditentukan akan dilewati dari awal file sumber.
Mulai pengunduhan besar dengan curl dan tekan Ctrl-C untuk menghentikannya di tengah pengunduhan.
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html ############## 20,1%
Injeksi dihentikan pada 20,1%. Dengan menggunakan “curl -C -” kita dapat melanjutkan memuat dari bagian terakhir yang kita tinggalkan. Sekarang pengunduhan akan berlanjut dari 20,1%.
Keriting -C - -O http://www.gnu.org/software/gettext/manual/gettext.html ################ 21,1%
Batas kecepatan dataAnda dapat membatasi kecepatan transfer data dengan opsi –limit-rate. Anda dapat melewatkan kecepatan maksimum sebagai argumen.
$ curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html
Perintah di atas akan membatasi kecepatan transfer hingga 1000 byte/detik. curl dapat menggunakan kecepatan yang lebih tinggi di puncak. Namun kecepatan rata-ratanya kira-kira 1000 byte/detik.
Di bawah ini adalah bilah kemajuan untuk perintah di atas. Anda dapat melihat bahwa kecepatan saat ini sekitar 1000 byte.
% Total % Diterima % Xferd Rata-rata Kecepatan Waktu Waktu Waktu Saat Ini Dload Upload Total Dihabiskan Kecepatan Kiri 1 1215k 1 13601 0 0 957 0 0:21:40 0:00:14 0:21:26 999 1 1215k 1 14601 0 0 960 0 0:21:36 0:00:15 0:21:21 999 1 1215k 1 15601 0 0 962 0 0:21:34 0:00:16 0:21:18 999
Muat file hanya jika diubah sebelum/sesudah waktu yang ditentukanAnda bisa mendapatkan file yang berubah setelah waktu tertentu menggunakan opsi -z di curl. Ini akan berfungsi untuk FTP dan HTTP.
Perintah di atas hanya akan memuat yy.html jika telah diubah lebih baru dari tanggal dan waktu yang ditentukan.
Perintah di atas akan memuat file.html jika telah diubah sebelum tanggal dan waktu yang ditentukan. Ketik 'man curl_getdate' untuk mempelajari lebih lanjut tentang berbagai sintaks yang didukung untuk ekspresi tanggal.
Melewati otentikasi HTTP di cURL
Terkadang situs web memerlukan nama pengguna dan kata sandi untuk melihat kontennya. Dengan menggunakan opsi -u, Anda dapat meneruskan kredensial ini dari cURL ke server web seperti yang ditunjukkan di bawah ini.
$ curl -u nama pengguna: URL kata sandi
Catatan: Secara default, curl menggunakan otentikasi dasar HTTP. Kita dapat mengatur metode otentikasi lain menggunakan –ntlm | -intisari.
cURL juga dapat digunakan untuk mendownload file dari server FTP. Jika jalur FTP yang ditentukan adalah direktori, maka secara default daftar file di dalamnya akan ditampilkan.
$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php
Perintah di atas akan mendownload file xss.php dari server ftp dan menyimpannya di direktori lokal.
$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
Di sini URL merujuk ke direktori. Oleh karena itu, cURL akan mencantumkan file dan direktori di URL yang diberikan.
CURL mendukung rentang yang ditentukan dalam URL. Ketika suatu rentang diberikan, file terkait dalam rentang tersebut akan dimuat. Ini akan berguna saat mengunduh paket dari situs mirror FTP.
$ curl ftp://ftp.uk.debian.org/debian/pool/main//
Perintah di atas akan mencantumkan semua paket dalam rentang a-z di terminal.
Mengunggah file ke server FTP
Curl juga dapat digunakan untuk mengunggah ke server FTP dengan opsi -T.
$ curl -u ftpuser:ftppass -T file saya.txt ftp://ftp.testserver.com
Perintah di atas akan mengunggah file bernama myfile.txt ke server FTP. Anda juga dapat mengunggah banyak file sekaligus menggunakan rentang.
$ curl -u ftpuser:ftppass -T "(file1,file2)" ftp://ftp.testserver.com
Secara opsional kita dapat menggunakan “.” untuk menerima dari input standar dan meneruskannya ke mesin jarak jauh.
$ curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt
Perintah di atas akan menerima output dari pengguna dari input standar dan menyimpan konten di server ftp sebagai 'myfile_1.txt'.
Anda dapat menentukan '-T' untuk setiap URL, dan setiap pasangan file alamat akan menentukan tempat untuk mengunggah apa
Informasi lebih lanjut dengan peningkatan verbositas dan opsi penelusuran
Anda dapat mengetahui apa yang terjadi menggunakan opsi -v. Opsi -v mengaktifkan mode verbal dan akan mencetak detail.
Keriting -v https://www.google.co.th/?gws_rd=ssl
Perintah di atas akan menghasilkan output sebagai berikut
* URL yang dibuat ulang ke: https://www.google.co.th/?gws_rd=ssl * Nama host TIDAK ditemukan di cache DNS * Mencoba 27.123.17.49... * Terhubung ke www.google.co.th (27.123. 17.49) port 80 (#0) > GET / HTTP/1.1 > Agen-Pengguna: curl/7.38.0 > Host: www.google.co.th > Terima: */* >< HTTP/1.1 200 OK < Date: Fri, 14 Aug 2015 23:07:20 GMT < Expires: -1 < Cache-Control: private, max-age=0 < Content-Type: text/html; charset=windows-874 < P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." * Server gws is not blacklisted < Server: gws < X-XSS-Protection: 1; mode=block < X-Frame-Options: SAMEORIGIN < Set-Cookie: PREF=ID=1111111111111111:FF=0:TM=1439593640:LM=1439593640:V=1:S=FfuoPPpKbyzTdJ6T; expires=Sun, 13-Aug-2017 23:07:20 GMT; path=/; domain=.google.co.th ... ... ...
Jika Anda memerlukan informasi lebih detail, Anda dapat menggunakan opsi –trace. Opsi –trace akan mengaktifkan dump jejak penuh dari semua data masuk/keluar untuk file tertentu
16/02/2006 Jeff Penebangan
Curl akan membantu Anda mengelola data yang dihosting di Web. Artikel ini membahas alat Curl gratis, yang dapat digunakan untuk mengirim dan menerima halaman Web dari baris perintah. Curl memudahkan untuk mengotomatisasi banyak hal
Curl akan membantu Anda mengelola data Anda di Web
Artikel ini membahas alat gratis bernama Curl yang memungkinkan Anda mengirim dan menerima halaman Web dari baris perintah. Curl memudahkan untuk mengotomatisasi banyak tugas keamanan dan administratif, seperti mengekstraksi halaman Web untuk dianalisis atau mengunduh patch keamanan dari Web.
Instalasi ikal
Curl disertakan dengan banyak distribusi Unix. Biner dan sumber tersedia untuk sebagian besar sistem operasi lain. Bahkan pemrogram PHP sumber terbuka dapat menggunakan Curl untuk mengakses konten Web dengan aman langsung dari skrip PHP.
Curl memerlukan paket OpenSSL untuk bekerja dengan situs Web Secure Sockets Layer (SSL). Ada dua versi Curl: satu dengan SSL dan satu lagi tanpa SSL. Saya merekomendasikan yang pertama, karena SSL dapat melindungi data dengan andal.
Sebelum Anda dapat menggunakan Curl dengan fungsionalitas SSL, Anda harus mengunduh dan menginstal paket OpenSSL secara terpisah. Biner OpenSSL untuk Windows dapat diunduh dari situs proyek GnuWin32 SourceForge di . Ada banyak alat berguna lainnya di situs ini yang telah di-porting ke Windows.
Anda harus mengunduh dan menginstal paket OpenSSL, lalu menyalin dua file DLL ke direktori system32:
Salin "C:Program FilesGnuWin32 binlibay32.dll" %windir%system32 salin "C:Program FilesGnuWin32 binlibssl32.dll" %windir%system32
Setelah ini Anda dapat menginstal Curl. Biner Curl yang kompatibel dengan SSL untuk Windows dapat ditemukan di http://curl.haxx.se/latest.cgi?curl=win32-ssl-sspi. Versi terbaru, curl 7.15.0, ada di win32-ssl-sspi.zip, yang berisi curl.exe dan dokumentasi.
Setelah menginstal Curl, Anda harus memastikannya berfungsi dengan memasukkan perintah
Keriting http://isc.sans.org/infocon.txt
Jika kata berwarna muncul di layar (misalnya hijau), Curl berfungsi. Dalam contoh sederhana ini, Curl mengambil konten Infocon dari situs Web Internet Storm Center SANS Institute. Hijau berarti Internet berfungsi normal dan tidak ada ancaman serius yang terdeteksi. Jika alih-alih hijau, kata kuning, oranye, atau merah muncul di layar, kesampingkan artikel ini dan kunjungi situs webnya http://isc.sans.org untuk mempelajari tentang kondisi berisiko tinggi di Internet. Jika terjadi kesalahan, Anda harus memeriksa apakah Curl sudah terpasang dengan benar.
Pada dasarnya, Curl mengambil halaman Web dan kemudian mengeluarkan sumber HTML halaman tersebut ke konsol. Namun, kemampuan utilitasnya lebih luas. Curl memiliki pemeriksaan kesalahan bawaan. Misalnya perintah
Keriting http://noserverdi sini
memberikan kesalahan Curl: (6) Tidak dapat menyelesaikan host: noserverhere; Host tidak ditemukan. Kode kesalahan dapat digunakan dalam skrip untuk menguji ketersediaan halaman Web atau respons server Web. Misalnya, jika Anda menggunakan Curl untuk mengambil halaman Web setiap hari, khususnya statistik situs Web harian, Anda dapat menambah skrip dengan kode sumber yang mencari kode kesalahan. Jika Curl mengeluarkan kode kesalahan Curl: (7) tidak dapat terhubung ke host, Anda dapat segera mengeluarkan peringatan atau mengirim email.
Mengekstraksi data terenkripsi
Salah satu keunggulan terpenting Curl adalah kompatibilitas SSL-nya. Halaman HTTPS yang diminta dikirim terenkripsi melalui jaringan, dan Curl kemudian menampilkan teks yang dipulihkan di layar. Curl juga memeriksa sertifikat - tanggal kedaluwarsa sertifikat, apakah nama host cocok dengan nama host di sertifikat, dan tingkat kepercayaan sertifikat akar - dan memperingatkan jika sertifikat salah. Opsi -cacert memungkinkan Anda menentukan file sertifikat tertentu. Pemeriksaan sertifikat dinonaktifkan menggunakan opsi -k. Pendekatan alternatif adalah dengan menggunakan opsi -insecure.
Tidak hanya untuk WWW
Kemampuan Curl lebih dari sekadar mengirim file melalui Internet. Menggunakan Curl Anda dapat dengan cepat membuat daftar direktori situs FTP:
Keriting ftp://myftpsite
Untuk melihat subdirektori situs, masukkan perintah
Keriting ftp://myftpsite/subdir/
Untuk mendownload file dari Internet, cukup tentukan nama file di URL. Contoh berikut memuat file bernama readme.txt langsung dari baris perintah dan menampilkannya di layar:
Curl ftp://ftp.microsoft.com/deskapps/games/readme.txt
Seringkali lebih mudah menyiapkan skrip Curl untuk memasukkan file FTP daripada menggunakan perintah FTP secara interaktif.
Secara default, data dikeluarkan langsung ke konsol, namun dapat dialihkan ke file menggunakan opsi -o dan -O. Untuk mendapatkan halaman dan menyimpannya ke disk, Anda harus menentukan opsi -o. Opsi -O menyimpan halaman yang dihasilkan dalam file lokal, dan Curl mengambil nama dokumen jarak jauh. Jika URL tidak menyertakan nama file, operasi ini akan gagal. Jika Anda menggunakan Curl untuk mengirim permintaan ke situs Web tanpa nama file, tetapi ingin menyimpan hasilnya dalam file, Anda dapat menentukan nama file pada baris perintah, misalnya:
Autentikasi
Curl menyediakan metode otentikasi Dasar, Intisari, dan Terintegrasi. Di sebagian besar situs, halaman otentikasi berbasis formulir dapat diakses menggunakan fungsi pengiriman Curl, seperti yang akan ditunjukkan di bawah. Ini berarti Anda bisa mengirimkan data formulir, seperti nama pengguna dan kata sandi Anda, ke situs Web jarak jauh yang meminta Anda memasukkan informasi pada halaman Web tersebut. Anda dapat menggunakan opsi -u untuk meneruskan kredensial, atau menempelkannya ke URL, seperti yang biasa dilakukan di FTP, misalnya:
Curl ftp://nama pengguna: kata sandi@situshtmlsaya
Dengan menggunakan Curl, teknik yang dipinjam dari FTP dapat ditransfer ke HTTP, seperti pada contoh berikut:
Keriting http://nama pengguna:kata sandi @myhtmlsite/default.htm
Curl juga menyediakan akses ke halaman Web melalui server proxy. Oleh karena itu, Curl dapat dikonfigurasi untuk menggunakan server proxy untuk otentikasi dalam mode Basic, Digest, dan NTLM.
Baca dokumentasinya
Dalam satu artikel sulit untuk mencakup semua fungsi Curl, termasuk mengunggah file ke server (-T), dan hanya melihat informasi di header HTTP (-I), dan melihat semua data dalam mode detail (-V ), dan keluaran tersembunyi ( -s). Saya sarankan untuk melihat lebih mendalam fitur-fitur Curl dalam tutorial yang diposting di http://curl.haxx.se/docs .
Contoh penggunaan ikal
Sekarang kita telah mempelajari dasar-dasar Curl, mari kita lihat contoh sederhana mengambil data dari situs Web dengan memberikan beberapa masukan. Mari kita buat alat Whois sederhana yang menunjukkan kesederhanaan dan kemudahan penggunaan Curl dan prosedur pengiriman data ke situs Web menggunakan parameter -d. Dalam contoh ini, Curl mengirimkan alamat IP ke situs Web Arin Whois dan kemudian mengambil hasilnya dari situs tersebut. Whois mencari informasi tentang pemilik alamat IP.
Penting untuk meneliti situs Web sebelum Anda memulai, karena kode sumber setiap situs berbeda, dan Curl tidak selalu berfungsi sama di setiap situs. Kunjungan awal ke situs memungkinkan Anda mengumpulkan informasi yang diperlukan agar Curl dapat berfungsi. Dalam contoh ini, saya menggunakan browser untuk mengunjungi situs Web http://www.arin.net/whois/, dan memperhatikan bahwa situs tersebut memiliki satu bidang entri data di mana pengunjung menunjukkan alamat IP yang mereka minati. Anda perlu mendapatkan rincian bidang ini, yang merupakan bagian dari formulir Web. Contoh ini menggunakan skrip Perl formfind.pl ( http://cool.haxx.se/cvs.cgi/curl/perl/contrib/ formfind?rev=HEAD&content-type=text/vnd.viewcvs-markup). Skrip Formfind.pl mengubah data formulir menjadi hasil keluaran yang berguna dan memudahkan pencarian data secara manual dalam HTML. Tentu saja, Perl harus diterapkan di komputer Anda untuk menjalankan Formfind. Paket Win32 Perl yang bagus dapat dipesan dari situs web ActiveState ActivePerl di http://www.activestate.com .
Mari kita lihat contohnya lebih detail. Pertama, mari kita lihat situs Web yang berisi formulir yang meminta informasi:
Keriting -o whoisOutputFile http://www.arin.net/whois/
Perintah ini mengambil halaman Whois dari http://www.arin.net dan menyimpannya dalam file teks whoisOutputFile, yang berisi teks HTML asli yang dirender oleh browser saat situs dikunjungi.
Maka Anda perlu mencari dan memilih data formulir:
./formfind.pl
Formfind menyediakan variabel formulir dan kemungkinan nilainya. Dalam contoh ini, hasil keluarannya cukup sederhana (lihat. layar 1).
Perhatikan data formulir Input bernama queryinput. Ini adalah kolom teks dimana Curl harus mengirimkan alamat IP yang Anda cari. Alamat IP spesifik tidak menjadi masalah - dalam contoh ini alamat Microsoft digunakan. Menggunakan parameter -d, alamat IP yang dicari diteruskan ke kolom input kueri:
Keriting -d "queryinput= 207.46.133.140" http://ws.arin.net/cgibin/whois.pl
Perintah Curl dengan opsi -d mencari data dalam formulir, dalam hal ini input kueri, yang mewakili alamat IP yang sedang dicari. Dalam hal ini, alamat target berubah; formulir harus mengirimkan data ke URL baru yang mewakili skrip whois.pl. Alamat target baru dapat dilihat pada output formfind di Layar 1.
Contoh ini juga mengambil teks HTML asli dari respons Whois, namun disembunyikan oleh sekelompok tag HTML. Secara default, pesan status Curl menunjukkan ukuran dokumen, persentase selesai, dan kecepatan penerusan. Outputnya dapat dibersihkan sedikit dan disaring berdasarkan nama organisasi yang memiliki alamat IP. Status ikal dapat dinonaktifkan menggunakan opsi -s. Perintah harus dijalankan melalui grep untuk mendapatkan OrgName saja:
Curl -s -d "queryinput= 207.46.133.140" http://ws.arin.net/cgibin/whois.pl | grep NamaOrg
Dalam contoh ini, output menunjukkan bahwa OrgName adalah Microsoft Corp.
@echo off curl -k -s -d "queryinput= %1" http://ws.arin.net/cgibin/whois.pl | grep NamaOrg
Mengunggah File Web dari Baris Perintah
Contoh praktis nyata: Anda perlu me-reboot router (modem) Anda untuk mengubah alamat IP. Untuk melakukan ini, Anda perlu: masuk ke router, buka halaman pemeliharaan dan klik tombol "Reboot". Jika tindakan ini perlu dilakukan beberapa kali, maka prosedurnya harus diulang. Setuju, Anda tidak ingin melakukan rutinitas ini secara manual setiap saat. cURL memungkinkan Anda mengotomatiskan semua ini. Hanya dengan beberapa perintah cURL Anda dapat memperoleh otorisasi dan menyelesaikan tugas di router.
- cURL berguna untuk mengambil data dari website pada baris perintah.
Itu. kasus penggunaan cURL cukup nyata, meskipun sebagian besar cURL dibutuhkan oleh programmer yang menggunakannya untuk program mereka.
CURL mendukung banyak protokol dan metode otorisasi, dapat mentransfer file, bekerja dengan benar dengan cookie, mendukung sertifikat SSL, proxy, dan banyak lagi.
cURL di PHP dan baris perintah
Kita dapat menggunakan cURL dalam dua cara utama: dalam skrip PHP dan pada baris perintah.
Untuk mengaktifkan cURL di PHP di server, Anda perlu menghapus komentar pada baris di file php.ini
Ekstensi=php_curl.dll
Dan kemudian reboot server.
Di Linux Anda perlu menginstal paket curl.
Di Debian, Ubuntu atau Linux Mint:
$ sudoapt-get install ikal
Di Fedora, CentOS atau RHEL:
$ sudo yum instal keriting
Untuk melihat dengan jelas perbedaan penggunaan di PHP dan di baris perintah, kita akan melakukan tugas yang sama dua kali: pertama di skrip PHP, dan kemudian di baris perintah. Mari kita coba untuk tidak bingung.
Mengambil data menggunakan cURL
Mengambil data menggunakan cURL di PHP
Contoh di PHP:
Semuanya sangat sederhana:
$target_url- alamat situs yang kami minati. Setelah alamat situs, Anda dapat memberi titik dua dan menambahkan alamat port (jika port berbeda dari standar).
curl_init- menginisialisasi sesi baru dan mengembalikan pegangan, yang dalam contoh kita ditugaskan ke variabel $ch.
Kami kemudian mengeksekusi permintaan dengan fungsi cURL curl_exec, yang mana deskriptor diteruskan sebagai parameter.
Semuanya sangat logis, tetapi ketika skrip ini dijalankan, konten situs akan ditampilkan di halaman kami. Namun bagaimana jika kita tidak ingin menampilkan konten, tetapi ingin menuliskannya ke dalam variabel (untuk diproses atau diurai selanjutnya).
Mari tambahkan sedikit pada skrip kita:
0) ( echo "Kesalahan ikal: " . curl_error($ch); ) curl_close($ch); ?>
Kami punya garis curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);.
curl_setopt- mengatur opsi. Daftar lengkap opsi dapat ditemukan di halaman ini:
Tersembunyi dari tamu
$response_data = curl_exec($ch);
Sekarang nilai skrip ditetapkan ke variabel $response_data, yang dengannya operasi lebih lanjut dapat dilakukan. Misalnya, Anda bisa menampilkan isinya.
Jahitan
Jika (curl_errno($ch) > 0) ( echo "Kesalahan keriting: " . curl_error($ch); )
berfungsi untuk debugging jika terjadi kesalahan.
Mengambil data menggunakan cURL pada baris perintah
Di baris perintah, cukup ketik
di mana, bukannya mi-al.ru- alamat situs web Anda.
Jika Anda perlu menyalin data ke dalam variabel daripada menampilkan hasilnya di layar, lakukan ini:
Temp="curl mi-al.ru"
Namun, beberapa data masih ditampilkan:
Untuk mencegahnya ditampilkan, tambahkan kunci -S:
Temp="curl -s mi-al.ru"
Anda dapat melihat apa yang telah direkam:
Gema $temp | lebih sedikit
Otentikasi dasar dan HTTPOtentikasi, sederhananya, adalah memasukkan nama pengguna dan kata sandi.
Otentikasi dasar adalah otentikasi berbasis server. Untuk ini, dua file dibuat: .htaccess Dan .htpasswd
Isi file .htaccess kurang lebih seperti ini
AuthName "Hanya untuk pengguna terdaftar!" AuthType Basic memerlukan AuthUserFile /home/freeforum.biz/htdocs/.htpassw pengguna yang valid
Isi file .htpasswd kira-kira seperti ini:
Mial:CRdiI.ZrZQRRc
Itu. login dan hash kata sandi.
Saat Anda mencoba mengakses folder yang dilindungi kata sandi, browser akan menampilkan tampilan seperti ini:
Otentikasi HTTP terjadi ketika kita memasukkan login dan kata sandi ke dalam formulir di situs web. Otentikasi inilah yang digunakan saat masuk ke email, forum, dll.
Otentikasi CURL dasar (PHP)
Ada sebuah situs web
Tersembunyi dari tamu
Mari kita coba skrip awal kita:
0) ( echo "Kesalahan ikal: " . curl_error($ch); ) else ( echo $response_data; ) curl_close($ch); ?>
Meskipun skrip percaya bahwa tidak ada kesalahan, kami tidak menyukai hasilnya sama sekali:
Tambahkan dua baris:
Curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, "ru-board:ru-board");
Baris pertama kami mengatur jenis otentikasi - dasar. Baris kedua berisi nama dan kata sandi yang dipisahkan oleh titik dua (dalam kasus kami, nama dan kata sandinya sama - ru-board). Ternyata seperti ini:
0) ( echo "Kesalahan ikal: " . curl_error($ch); ) else ( echo $response_data; ) curl_close($ch); ?> Ayo kita coba: 30946 Hebat! Otentikasi cURL dasar (pada baris perintah) Hal yang sama dapat dicapai pada baris perintah dengan satu baris: curl -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/
Saya tidak lupa menentukan tipe otentikasi, hanya saja di cURL tipe otentikasi dasar adalah default.
Semuanya berjalan begitu cepat di baris perintah sehingga, karena frustrasi, saya menulis program berikut. Dia terhubung ke situs dan mengunduh pembaruan terkini:
Temp=`curl -s -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/ | grep -E -o "Perbarui_FED_201(1).(2).(2).7z" | unik | ekor -n 1`; curl -o $temp -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/$temp
Hanya dengan beberapa perintah lagi Anda dapat menambahkan:
- membongkar arsip ke direktori yang ditentukan;
- meluncurkan pembaruan ConsultantPlus (ini adalah pembaruan untuk itu);
- Anda dapat memeriksa apakah pembaruan terbaru yang tersedia telah diunduh atau pembaruan baru telah muncul;
- tambahkan semuanya ke Cron untuk pembaruan harian.
Otentikasi HTTP Curl di PHP
Kita perlu tahu:
- alamat tempat mengirim data otentikasi
- metode pengiriman GET atau POST
- Gabung
- kata sandi
Alamat tujuan pengiriman data dapat diambil dari formulir otentikasi. Misalnya:
Jika Anda membuka kode ini di browser Anda, Anda akan melihat formulir dengan kolom teks dan tombol bertuliskan "OK". Jika Anda memasukkan "1905" dan mengklik OK, browser akan membuat URL baru yang akan diikutinya. URL akan direpresentasikan sebagai string yang terdiri dari jalur URL sebelumnya dan string seperti "junk.cgi?birthyear=1905&press=OK".
Misalnya, jika formulir terletak di "www.hotmail.com/when/birth.html", maka mengklik OK akan membawa Anda ke URL "www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK " .
Kebanyakan mesin pencari bekerja dengan cara ini.
Agar curl menghasilkan permintaan GET, cukup masukkan apa yang Anda harapkan dari formulir:
# curl "www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK"
4.2 POSTINGAN
Metode GET menyebabkan semua informasi yang dimasukkan muncul di bilah alamat browser Anda. Ini mungkin bagus ketika Anda perlu mem-bookmark suatu halaman, namun jelas merupakan kerugian ketika Anda memasukkan informasi sensitif ke dalam kolom formulir, atau ketika jumlah informasi yang dimasukkan ke dalam kolom terlalu besar (mengakibatkan URL tidak dapat dibaca).
Protokol HTTP menyediakan metode POST. Dengan itu, klien mengirimkan data secara terpisah dari URL dan oleh karena itu Anda tidak akan melihatnya di bilah alamat.
Formulir yang menghasilkan permintaan POST mirip dengan yang sebelumnya:
Curl dapat menghasilkan permintaan POST dengan data yang sama sebagai berikut:
# curl -d "birthyear=1905&press=%20OK%20" www.hotmail.com/when/junk.cgi
Permintaan POST ini menggunakan "Aplikasi Tipe Konten/x-www-form-urlencoded", yang merupakan metode yang paling banyak digunakan.
Data yang Anda kirim ke server harus dikodekan dengan benar, curl tidak akan melakukan ini untuk Anda. Misalnya, jika Anda ingin data berisi spasi, Anda perlu mengganti spasi dengan %20, dst. Kurangnya perhatian terhadap masalah ini adalah kesalahan umum yang menyebabkan data tidak ditransfer sebagaimana mestinya.
Pada tahun 1995, cara tambahan untuk mentransfer data melalui HTTP telah ditentukan. Ini didokumentasikan dalam RFC 1867, jadi metode ini kadang-kadang disebut posting RFC1867.
Metode ini terutama dirancang untuk mendukung pengunggahan file dengan lebih baik. Formulir yang memungkinkan pengguna mengunggah file terlihat seperti ini dalam HTML:
Perhatikan bahwa Tipe Konten diatur ke multipart/form-data.
Untuk mengirim data ke formulir ini menggunakan curl, masukkan perintah:
# curl -F unggah=@namafile lokal -F tekan=OK
4.4 Bidang tersembunyi
Cara umum untuk menyampaikan informasi keadaan dalam aplikasi HTML adalah dengan menggunakan bidang tersembunyi dalam formulir. Bidang tersembunyi tidak diisi, tidak terlihat oleh pengguna dan dikirimkan dengan cara yang sama seperti bidang biasa.
Contoh sederhana formulir dengan satu bidang terlihat, satu bidang tersembunyi, dan tombol OK:
Untuk mengirim permintaan POST menggunakan curl, Anda tidak perlu memikirkan apakah bidang tersebut disembunyikan atau tidak. Untuk curl semuanya sama:
# curl -d "tahun kelahiran=1905&tekan=OK&orang=daniel"
4.5 Cari tahu seperti apa permintaan POST
Saat Anda ingin mengisi formulir dan mengirim data ke server menggunakan curl, Anda mungkin ingin permintaan POST terlihat sama persis dengan yang dibuat menggunakan browser.
Cara mudah untuk melihat permintaan POST Anda adalah dengan menyimpan halaman HTML dengan formulir ke disk, ubah metode menjadi GET, dan klik tombol "Kirim" (Anda juga dapat mengubah URL tujuan pengiriman data).
Anda akan melihat data yang dilampirkan ke URL, dipisahkan dengan karakter "?", seperti yang diharapkan saat menggunakan formulir GET.
5. TETAPKAN
Mungkin cara terbaik untuk mengunggah data ke server HTTP adalah dengan menggunakan PUT. Sekali lagi, ini memerlukan program (skrip) di bagian belakang yang mengetahui apa yang harus dilakukan dan bagaimana menerima aliran HTTP PUT.
Kirim file ke server menggunakan curl:
# curl -T unggah file www.uploadhttp.com/receive.cgi
6. Otentikasi
Otentikasi - meneruskan nama pengguna dan kata sandi ke server, setelah itu memeriksa apakah Anda memiliki hak untuk menyelesaikan permintaan yang diperlukan. Otentikasi dasar (yang digunakan curl secara default) didasarkan pada teks biasa, yang berarti bahwa nama pengguna dan kata sandi tidak akan dienkripsi, tetapi hanya sedikit "dikaburkan" dengan algoritme Base64, sehingga memungkinkan penyerang berada di jalur antara Anda dan Anda untuk cari tahu informasi ini server HTTP.
Memberitahu curl untuk menggunakan nama pengguna dan kata sandi:
# curl -u nama: kata sandi www.secrets.com
Situs mungkin memerlukan penggunaan metode otentikasi yang berbeda (lihat apa yang ditulis server di header), dalam kasus ini Anda dapat menggunakan sakelar --ntlm, --digest, --negotiate, atau bahkan --anyuth. Terkadang akses ke server HTTP eksternal terjadi melalui proxy, hal ini sering dilakukan di perusahaan dan firma. Proksi HTTP mungkin memerlukan nama pengguna dan kata sandi Anda sendiri untuk mengakses Internet. Kunci ikal yang sesuai:
# curl -U pengguna proxy: kata sandi proxy curl.haxx.se
Jika proxy memerlukan otentikasi menggunakan metode NTLM, tentukan --proxy-ntlm, jika metode Digest, maka --proxy-digest.
Jika Anda tidak menentukan kata sandi di opsi -u dan -U, maka curl akan menanyakannya secara interaktif.
Perhatikan bahwa ketika curl berjalan, string startup (dan dengan itu kunci dan kata sandi) mungkin terlihat oleh pengguna lain di sistem Anda dalam daftar tugas. Ada cara untuk mencegah hal ini. Lebih lanjut tentang ini di bawah.
7. Perujuk
Permintaan HTTP mungkin menyertakan bidang "referensi", yang menunjukkan dari URL mana pengguna datang ke sumber daya ini. Beberapa program/skrip memeriksa kolom "referer" dan tidak menjalankan permintaan jika pengguna berasal dari halaman yang tidak dikenal. Meskipun ini adalah cara yang bodoh untuk memeriksanya, banyak skrip yang masih menggunakannya. Dengan curl Anda dapat meletakkan apa pun di bidang "referensi" dan membuatnya melakukan apa yang Anda inginkan.
Ini dilakukan sebagai berikut:
# curl -e http://curl.haxx.se daniel.haxx.se
8. Agen Pengguna
Semua permintaan HTTP mendukung bidang "Agen-Pengguna", yang menentukan aplikasi klien pengguna. Banyak aplikasi web menggunakan informasi ini untuk merender halaman dengan satu atau lain cara. Pemrogram web membuat beberapa versi halaman untuk pengguna browser yang berbeda untuk meningkatkan tampilan, menggunakan berbagai javascript, skrip vbscript, dll.
Terkadang Anda mungkin menemukan bahwa curl mengembalikan halaman yang tidak sama dengan yang Anda lihat di browser Anda. Dalam hal ini, sebaiknya gunakan kolom "Agen Pengguna" untuk sekali lagi menipu server.
Menyamarkan curl sebagai Internet Explorer pada mesin Windows 2000:
# curl -A "Mozilla/4.0 (kompatibel; MSIE 5.01; Windows NT 5.0)"
Mengapa tidak menjadi Netscape 4.73 di mesin Linux (PIII):
# curl -A "Mozilla/4.73 (X11; U; Linux 2.2.15 i686)"
9. Pengalihan
Saat merespons permintaan Anda, server mungkin mengembalikan indikasi ke mana browser harus pergi selanjutnya untuk sampai ke halaman yang diinginkan, bukan halaman itu sendiri. Header yang memberitahu browser untuk mengalihkan adalah "Lokasi:".
Secara default, curl tidak menuju ke alamat yang ditentukan di "Lokasi:", tetapi hanya menampilkan halaman seperti biasa. Tapi Anda bisa mengarahkannya seperti ini:
# curl -L www.sitethatredirects.com
Jika Anda menggunakan curl untuk membuat permintaan POST ke situs yang segera dialihkan ke halaman lain, Anda dapat menggunakan kombinasi -L dan -d/-F dengan aman. Curl akan menghasilkan permintaan POST untuk halaman pertama, dan kemudian permintaan GET untuk halaman berikutnya.
10. Kue
Dengan cookie, browser web mengontrol status di sisi klien. Cookie adalah nama dengan konten terlampir. Dengan mengirimkan cookie, server memberi tahu klien jalur dan nama host ke mana cookie harus dikirim di lain waktu, masa pakai cookie, dan beberapa parameter lainnya.
Ketika klien terhubung ke server di alamat yang ditentukan dalam cookie yang diterima, klien mengirimkan cookie tersebut ke server (jika masa pakainya belum berakhir).
Banyak aplikasi dan server menggunakan metode ini untuk menggabungkan beberapa permintaan menjadi satu sesi logis. Agar curl juga dapat menjalankan fungsi ini, kita harus dapat menyimpan dan mengirim cookie, seperti yang dilakukan browser.
Cara paling sederhana untuk mengirim cookie ke server saat menerima halaman menggunakan curl adalah dengan menambahkan saklar yang sesuai pada baris perintah:
# curl -b "nama=Daniel" www.cookiesite.com
Cookie dikirim sebagai header HTTP biasa. Hal ini memungkinkan curl untuk menyimpan cookie dengan mempertahankan header. Menyimpan cookie menggunakan curl dilakukan dengan perintah:
# curl -D headers_and_cookies www.cookiesite.com
(omong-omong, untuk menyimpan cookie lebih baik menggunakan tombol -c, lebih lanjut tentang itu di bawah).
curl memiliki pengendali cookie berfitur lengkap, yang berguna ketika Anda ingin terhubung ke server lagi dan menggunakan cookie yang disimpan terakhir kali (atau dimodifikasi secara manual). Untuk menggunakan cookie yang disimpan dalam file, panggil curl seperti ini:
# curl -b disimpan_cookies_in_file www.cookiesite.com
"Mesin cookie" Curl diaktifkan saat Anda menentukan tombol -b. Jika Anda hanya ingin curl menerima cookie, gunakan -b untuk menentukan file yang tidak ada. Misalnya, jika Anda ingin curl menerima cookie dari suatu halaman dan kemudian mengikuti pengalihan (mungkin memberikan cookie yang baru saja diterima), Anda dapat memanggil curl seperti ini:
# curl -b nada -L www.cookiesite.com
Curl dapat membaca dan menulis cookie dalam format Netscape dan Mozilla. Ini adalah cara mudah untuk bertukar cookie antara browser dan skrip otomatis. Tombol -b secara otomatis mendeteksi apakah cookie tertentu adalah cookie dari browser yang ditentukan dan menanganinya sesuai dengan itu, dan menggunakan tombol -c/--cookie-jar Anda dapat memaksa curl untuk menulis cookie baru ketika operasi selesai:
# curl -b cookies.txt -c newcookies.txt www.cookiesite.com
11. HTTPS
Ada beberapa cara untuk mengamankan komunikasi HTTP Anda. Protokol paling terkenal yang memecahkan masalah ini adalah HTTPS, atau HTTP melalui SSL. SSL mengenkripsi semua data yang dikirim dan diterima melalui jaringan, meningkatkan kemungkinan informasi Anda tetap rahasia.
Curl mendukung permintaan ke server HTTPS menggunakan perpustakaan OpenSSL gratis. Permintaan terjadi dengan cara biasa:
# keriting https://that.secure.server.com
11.1 Sertifikat
Di dunia HTTPS, Anda menggunakan sertifikat selain nama pengguna dan kata sandi untuk autentikasi. Curl mendukung sertifikat sisi klien. Semua sertifikat dikunci dengan frasa sandi yang harus Anda masukkan sebelum curl dapat mulai bekerja dengannya. Frasa sandi dapat ditentukan pada baris perintah atau dimasukkan secara interaktif. Sertifikat dalam curl digunakan sebagai berikut:
# curl -E mycert.pem https://that.secure.server.com
Curl juga memverifikasi keaslian server dengan memeriksa sertifikat server terhadap sertifikat yang disimpan secara lokal. Jika ada perbedaan, curl akan menolak untuk terhubung. Untuk mengabaikan pemeriksaan autentikasi, gunakan tombol -k.
Informasi lebih lanjut tentang sertifikat dapat ditemukan di http://curl.haxx.se/docs/sslcerts.html.
12. Header permintaan khusus
Anda mungkin perlu mengubah atau menambahkan elemen permintaan ikal individual.
Misalnya, Anda dapat mengubah permintaan POST menjadi PROPFIND dan mengirim data sebagai "Tipe Konten: teks/xml" (bukan Tipe Konten normal):
# keriting -d "
Anda dapat menghapus judul dengan menentukannya tanpa konten. Misalnya, Anda dapat menghapus header "Host:", sehingga membuat permintaan menjadi "kosong":
# curl -H "Host:" http://mysite.com
Anda juga dapat menambahkan judul. Server Anda mungkin memerlukan header "Tujuan:":
# curl -H "Tujuan: http://moo.com/nowhere" http://url.com
13. Men-debug
Sering terjadi bahwa situs merespons permintaan curl secara berbeda dibandingkan permintaan browser. Dalam hal ini, Anda perlu membuat curl semirip mungkin dengan browser:
- Gunakan sakelar --trace-ascii untuk menyimpan catatan kueri secara mendetail sehingga Anda dapat memeriksanya secara mendetail dan memahami masalahnya.
- Pastikan Anda memeriksa cookie dan menggunakannya jika perlu (baca -b dan simpan -c)
- Tentukan salah satu browser populer terbaru di bidang "agen-pengguna".
- Isi kolom "referer" seperti yang dilakukan browser
- Jika Anda menggunakan permintaan POST, pastikan semua kolom dikirim dalam urutan yang sama seperti browser (lihat poin 4.5 di atas)
Penolong yang baik dalam tugas sulit ini adalah plugin LiveHTTPHeader untuk Mozilla/Firefox, yang memungkinkan Anda melihat semua header yang dikirim dan diterima browser ini (bahkan saat menggunakan HTTPS).
Pendekatan tingkat rendah adalah menangkap lalu lintas HTTP di jaringan menggunakan program seperti ethereal atau tcpdump, dan kemudian menganalisis header apa yang diterima dan dikirim oleh browser (HTTPS membuat pendekatan ini tidak efektif).
RFC 2616 wajib dibaca oleh siapa saja yang ingin memahami protokol HTTP.
RFC 2396 menjelaskan sintaks URL.
RFC 2109 mendefinisikan cara kerja cookie.
RFC 1867 mendefinisikan format File Upload Posting.
http://openssl.planetmirror.com - beranda proyek OpenSSL
http://curl.haxx.se - beranda proyek cURL
Kehidupan seorang web developer dibayangi oleh kesulitan. Hal ini sangat tidak menyenangkan bila sumber kesulitan ini tidak diketahui. Apakah ini masalah dengan pengiriman permintaan, atau dengan respons, atau dengan perpustakaan pihak ketiga, atau apakah API eksternal bermasalah? Ada banyak gadget berbeda yang dapat membuat hidup kita lebih mudah. Berikut adalah beberapa alat baris perintah yang menurut saya pribadi sangat berharga.
keriting
cURL adalah program untuk mentransfer data melalui berbagai protokol, mirip dengan wget. Perbedaan utamanya adalah secara default wget menyimpan ke file, sedangkan cURL menghasilkan output ke baris perintah. Ini membuatnya sangat mudah untuk melihat konten situs web. Misalnya, berikut cara cepat mendapatkan IP eksternal Anda saat ini:
$ikal ifconfig.me 93.96.141.93
Pilihan -Saya(tunjukkan judul) dan -SAYA(hanya tampilkan header) jadikan cURL alat yang luar biasa untuk men-debug respons HTTP dan menganalisis apa sebenarnya yang dikirimkan server kepada Anda:
$ curl -I habrahabr.ru HTTP/1.1 200 OK Server: nginx Tanggal: Kam, 18 Agustus 2011 14:15:36 GMT Tipe Konten: teks/html; charset=utf-8 Koneksi: tetap hidup Tetap hidup: batas waktu=25
Parameter -L Juga berguna, ini memaksa cURL untuk mengikuti pengalihan secara otomatis. cURL mendukung otentikasi HTTP, cookie, tunneling melalui proxy HTTP, pengaturan manual di header, dan masih banyak lagi.
Pengepungan
Siege adalah alat pengujian beban. Selain itu, ia memiliki pilihan yang nyaman -G, yang sangat mirip dengan keriting –iL, tetapi selain itu juga menampilkan header permintaan http. Berikut ini contoh dari google.com (beberapa judul dihapus agar singkatnya):
$ pengepungan -g www.google.com GET / HTTP/1.1 Host: www.google.com Agen-Pengguna: JoeDog/1.00 (X11; I; Siege 2.70) Koneksi: tutup HTTP/1.1 302 Lokasi Ditemukan: http:// www.google.co.uk/ Tipe Konten: text/html; charset=UTF-8 Server: gws Panjang Konten: 221 Koneksi: close GET / HTTP/1.1 Host: www.google.co.uk Agen-Pengguna: JoeDog/1.00 (X11; I; Siege 2.70) Koneksi: close HTTP/ 1.1 200 OK Tipe Konten: teks/html; charset=ISO-8859-1 X-XSS-Perlindungan: 1; mode=blok Koneksi: tutup
Namun keunggulan Siege adalah pengujian beban. Seperti patokan Apache ab, ia dapat mengirim banyak permintaan paralel ke situs dan melihat cara menangani lalu lintas. Contoh berikut menunjukkan bagaimana kami menguji Google dengan 20 query selama 30 detik dan kemudian mencetak hasilnya:
$ pengepungan -c20 www.google.co.uk -b -t30s ... Mengangkat pengepungan server... selesai. Transaksi: 1400 hits Ketersediaan: 100,00 % Waktu yang berlalu: 29,22 detik Data yang ditransfer: 13,32 MB Waktu respons: 0,41 detik Kecepatan transaksi: 47,91 trans/detik Throughput: 0,46 MB/detik Konkurensi: 19,53 Transaksi berhasil: 1400 Transaksi gagal: 0 Transaksi terlama: 4.08 Transaksi terpendek: 0.08
Salah satu fitur Siege yang paling berguna adalah ia dapat bekerja tidak hanya dengan satu alamat, tetapi juga dengan daftar URL dari sebuah file. Ini bagus untuk pengujian beban karena Anda dapat menyimulasikan lalu lintas situs sebenarnya daripada hanya mengunjungi URL yang sama berulang kali. Misalnya, berikut cara menggunakan Siege untuk memuat server menggunakan alamat dari log Apache Anda:
$ potong -d " " -f7 /var/log/apache2/access.log > urls.txt $ pengepungan -c
Ngrep
Untuk analisis lalu lintas yang serius, ada Wireshark dengan ribuan pengaturan, filter, dan konfigurasi. Ada juga versi baris perintah hiu. Namun untuk tugas sederhana, saya menganggap fungsionalitas Wireshark berlebihan. Jadi, kecuali saya membutuhkan senjata yang ampuh, saya menggunakan . Ini memungkinkan Anda melakukan hal yang sama dengan paket jaringan seperti memahami lakukan dengan file.
Untuk lalu lintas web, Anda hampir selalu ingin menggunakan parameter tersebut -W untuk mempertahankan pemformatan string serta opsi -Q, yang menyembunyikan informasi berlebihan tentang paket yang tidak cocok. Berikut adalah contoh perintah yang mencegat semua paket dengan perintah GET atau POST:
Ngrep -q -W byline "^(GET|POST) .*"
Anda dapat menambahkan filter tambahan untuk paket, misalnya berdasarkan host, alamat IP, atau port tertentu. Berikut adalah filter untuk semua lalu lintas ke dan dari google.com, port 80, yang berisi kata “pencarian”.
Ngrep -q -W byline "cari" host www.google.com dan port 80