Saya memiliki beberapa sistem "korporatif" yang harus saya gunakan di tempat kerja. Beberapa dari mereka mengerikan, dengan bingkai, pop-up dan semacamnya.
Saya sedang berpikir tentang mengotomatisasi beberapa hal menggunakan curl atau sesuatu seperti itu. Saya perlu login, klik hyperlink, atur beberapa data, dan mereka lakukan beberapa posting.
Apakah mungkin menggunakan keriting? Atau apakah saya akan lebih baik menggunakan sesuatu seperti Selenium?
wget
dancurl
dapat menggunakan file cookie Netscape, jadi jika browser Anda juga menggunakan yang seperti itu, mungkin cukup dengan hanya menentukannya ke pengunduh. Jadi, jenis browser apa yang Anda gunakan?Jawaban:
Ya, sangat mungkin dengan curl. Yang paling penting adalah menyimpan dan memuat kembali cookie di antara penggunaan curl
--cookie-jar
. Anda juga dapat memposting data formulir sesuai kebutuhan. Saya biasanya menggunakan add-on Firefox yang disebut Live HTTP Header untuk menangkap apa yang terjadi ketika saya menavigasi situs web. Ini akan merekam setiap header, tetapi juga setiap posting bentuk yang sangat membantu ketika mencoba untuk mencari tahu apa yang harus dilakukan dengan curl. Saya telah menulis skrip bash mengotomatiskan berbagai permintaan ikal dan menggunakan pipa dan file sementara (milikmktemp
) untuk melakukan beberapa pemrosesan terbatas pada halaman web, tetapi jika harus melakukan banyak pemrosesan halaman web saya biasanya beralih ke Perl dengan LibWWW.sumber
Untuk kasus sederhana mengunduh konten halaman, gunakan curl atau wget . Keduanya adalah alat baris perintah yang dirancang untuk mengunduh file melalui HTTP dan memiliki banyak opsi. Dalam kasus Anda, Anda mungkin perlu membuat alat-alat ini lebih mirip browser; jawaban lutzky dan jawaban penguin359 menyebutkan beberapa opsi curl dan wget yang berguna dalam hal itu.
Terkadang, ketika Anda harus masuk , jauh lebih mudah untuk masuk secara manual di browser web, lalu ekspor cookie browser web (ekstensi seperti allcookies atau Ekspor Cookie untuk Firefox dapat membantu).
Jika Anda perlu mem-parsing konten beberapa halaman atau memposting formulir , Anda mungkin membutuhkan alat yang lebih bagus daripada menggulung dan meleset. Beberapa alat yang bagus ada Perl dengan
LWP
(libwww) danHTML::TreeBuilder
(HTML-Tree) atau Python dengan perpustakaan standar (terutamahttplib
danhtmllib
).Untuk interaksi yang lebih kompleks dengan situs web, rujukannya adalah Perl's WWW :: Mechanize . Perpustakaan Perl ini mendefinisikan fungsi tingkat tinggi untuk berinteraksi dengan situs web seperti yang dilakukan oleh browser web, termasuk POSTing, formulir, cookie, tetapi tidak Javascript. Jika Perl bukan secangkir teh Anda, perpustakaan ini memiliki tiruan dengan kemampuan serupa dalam bahasa lain, seperti Python mechanize dan Ruby Mechanize .
Akhirnya, ketika Anda membutuhkan Javascript , pendekatan yang biasa digunakan adalah menggunakan browser web yang digerakkan oleh kerangka kerja otomatisasi browser. Selenium dan Watir adalah pilihan populer; lihat juga Apakah ada alat yang bagus selain SeleniumRC yang dapat mengambil halaman web termasuk konten pasca-dicat oleh JavaScript?
sumber
Favorit saya adalah
wget
, jadi saya akan memberi contoh dengan itu. Yang ingin Anda lakukan adalah mereplikasi sesi browser Anda sedekat mungkin, jadi gunakan argumen baris perintah yang relevan. Yang diperlukan tergantung pada seberapa teliti situs memeriksa browser Anda.--referer
(sic) biasanya cukup, tetapi Anda mungkin juga perlu--user-agent
dan--load-cookies
.Teknik ini pada dasarnya adalah spoofing peramban - Anda mencoba
wget
menampilkan diri di situs sebagai peramban. Masalah terbesar yang akan Anda hadapi adalah CAPTCHA, yang tidak ada di situs contoh yang Anda berikan. Juga, pastikan Anda mematuhi kebijakan waktu situs (45 detik dalam kasus ini), atau Anda mungkin akan diblokir.Mungkin tidak mungkin untuk mengunduh file yang sama di berbagai sesi - situs ini memberikan hak istimewa mengunduh pada file tertentu ke sesi tertentu.
sumber