Pada 21 Juni, putusan pidana muncul di mata publik. Beberapa terdakwa menggunakan crawler untuk merayapi konten server. Keputusan tingkat pertama menemukan bahwa mereka telah melanggar Pasal 285 Hukum Pidana "Memperoleh Data Sistem Informasi Komputer Secara Ilegal" dan dijatuhi hukuman Penjara jangka waktu tetap dan denda XXX. (klik disini)
Para penonton di bawah meledak:
Netizen A: Belum lama ini saya baru belajar merangkak, apakah akan ditinggalkan?
Netizen B: Apa yang harus saya lakukan, lari?
Netizen C: Saya menggigil sebagai crawler.jpg
Netizen Ding: Apakah postingan tentang crawler engineer harus keren?
Namun, ada juga orang yang lebih waras. Misalnya, membiarkan karyawan menggunakan keakraban mereka dengan sistem, atau mungkin pintu belakang mereka sendiri, untuk memalsukan konten perayapan UA tertentu dan dituntut oleh pemilik lama.
Contoh lain: Jangan panik. Seseorang yang melihat v2 mengatakan bahwa itu bukan crawler, tetapi mencuri data dari server internal.
Singkatnya, kosakata bintang dari teknologi perayap telah memasuki mata publik lagi.Takdir bahwa di Konferensi Nabi yang diselenggarakan oleh Alibaba Cloud belum lama ini, saluran tamu rumah Lei Feng juga mendengar topik tentang perayap.
Pembicaranya adalah Ahli Keamanan Senior Alibaba Cloud Pigman, yang telah lama terlibat dalam pengujian keamanan otomatis, akrab dengan berbagai teknologi pengembangan, dan pandai dalam pengujian penetrasi dan penambangan data.
Pigman memperkenalkan cara membuat dan mengimplementasikan crawler dinamis berdasarkan pengalaman sejarah dan pemandangan yang diketahui. Melalui mode debugging Headless yang disediakan oleh browser, ia melintasi semua objek dinamis dari halaman web, secara otomatis mengisi nilai parameter dari formulir masukan, dan memicu peristiwa terikat pada objek, secara efektif menyelesaikan penambangan permukaan serangan selama uji keamanan.
Berikut isi pidato Pigman yang dihimpun oleh Leifeng.com.
Sebelum berbicara tentang teknologi perayap, izinkan saya memikirkan pertanyaan: Mengapa kita membutuhkan perayap pemindai?
Menurut sejumlah besar investigasi dan analisis, sebagian besar perusahaan dalam negeri masih tetap melakukan proses daging manusia saat melakukan uji keamanan. Tingkat pengujian otomatis relatif rendah, dan perusahaan telah menginvestasikan banyak biaya tenaga kerja dalam pekerjaan berulang dalam proses pengujian keamanan harian.
Bagaimanapun, orang-orang adalah darah dan daging, terkadang lelah, terkadang emosional. Mungkin penguji perusahaan melakukan pengujian saat suasana hati mereka sedang buruk, dan hasil uji keamanan akhir bergantung pada suasana hati. Hanya jika permukaan serangan dan persiapan pengujian telah siap sepenuhnya, hasil tersebut dapat dijamin. Pada saat yang sama, kerangka kerja Web2.0 sangat aktif, menyebabkan banyak kegagalan, dan perayapnya tidak dapat mengenali struktur tautan dari seluruh laman web.
Saat ini kami membutuhkan perayap untuk membantu kami meningkatkan efisiensi uji keamanan secara keseluruhan.
Pertama-tama, bagaimana rekan industri dan teknisi keamanan menerapkan crawler? Mari saya beri contoh. Seorang teman di grup WeChat mengatakan bahwa dia menggunakan kode berikut untuk merayapi seebug dan tidak mendapatkan hasilnya. Ini karena situs web seebug menggunakan teknologi obfuscation kode dan telah sering diperbarui, yang pada akhirnya menyebabkan kegagalan total dari crawler yang sebelumnya hanya statis.
Bagaimana cara mengatasi cacat crawler statis?
Anda hanya perlu memperkenalkan sedikit teknologi baru. Misalnya, crawler dengan mesin GS dapat mengatasi masalah ini. Anda dapat menginstal paket instalasi dengan PIP dan menggunakan kode di sebelah kiri untuk merayapi sepenuhnya ke informasi tautan seebug.
Proyek ini dikembangkan dengan mewarisi browser tanpa antarmuka Google. Tidak ada antarmuka yang dibuat sebagai browser healless, dan sekarang ada empat jenis. Kekurangannya adalah sangat tidak stabil saat menggunakan banyak pustaka pihak ketiga. Belakangan, phantomjs muncul, tetapi phantomjs memiliki banyak masalah yang tidak bisa diperbaiki. Penulis kemudian mengumumkan bahwa itu tidak lagi dipertahankan dan hanya dapat memilih browser tanpa antarmuka Google.
Mengapa menggunakan phantomjs Google untuk merayapi? Ada tiga poin utama. Yang pertama didukung oleh pabrikan Google besar, dan Google Chrome memiliki pangsa terbesar di dunia. Ini memiliki tingkat stabilitas yang tinggi dan diperbarui setiap beberapa jam. Selain itu, dukungan Google untuk organisasi standar W3C adalah yang tertinggi di antara semua browser di dunia, dan kompatibilitasnya juga lebih baik.
Kembali ke topik hari ini, apa itu perayap heuristik?
Singkatnya, perayap heuristik didasarkan pada semua pengalaman historis dan adegan yang diketahui yang telah dilihat. Dengan menganalisis adegan ini dan menggunakan pengalaman yang diketahui, mereka membuat dan menerapkan aturan perayap.
Selanjutnya, mari kita lihat keseluruhan proses praktik terbaik crawler heuristik. Pertama-tama, crawler dapat dianggap sebagai sistem jalur perakitan pabrik Sistem jalur perakitan harus memiliki pemimpin tim yang bertanggung jawab atas penjadwalan tugas setiap jalur produksi, di mana ROP adalah pemimpin tim. Setelah proses jelas, setiap langkah menjalankan tugasnya sendiri-sendiri untuk mencapai fungsinya sendiri-sendiri.
Fungsi manajer dari kepala crawler bertanggung jawab atas penjadwalan tugas dan manajemen acara. Pada langkah pertama melakukan crawler pemindai, pertama-tama teruskan URL ke pemimpin tim penjadwal tugas, yang meneruskan tugas ke yang berikut, lalu membuka halaman untuk memasuki status pemuatan. Setelah halaman dimuat, penting untuk menentukan apakah halaman saat ini sudah selesai. Misalnya, terkadang beberapa server web memiliki kinerja jaringan yang buruk, atau mengalami kesalahan GS, waktu tunggu situs web, dan beberapa sumber daya tidak ditampilkan sepenuhnya. Saat ini, seluruh halaman web dapat ditentukan oleh tiga status anotasi ikon Apakah struktur dimuat dan seluruh halaman dibuka.
Setelah selesai, kunci seluruh halaman browser tanpa tindakan apa pun, biarkan membuka halaman web baru lainnya, atau lompat ke halaman web lain.
Setelah seluruh halaman web dimuat, Anda dapat memasuki tahap pembajakan fungsi setelah mengunci seluruh lompatan halaman web. Kemudian mulai menyuntikkan pendengar untuk memantau semua perubahan peristiwa dan informasi pemicu peristiwa. Ketika pemuatan file, pembajakan fungsi, dan pemantauan semuanya selesai, peristiwa apa pun yang terikat ke kotak input dapat dikompilasi, dan beberapa informasi untuk penilaian rutin dari nilai parameter input tertentu.
Ketika kami menemukan bahwa ada formulir di halaman, kami dapat mengisi beberapa parameter dengan menganalisis jenis masukan dan nama formulir. Setelah semua proses di atas selesai, Anda akan mendapatkan pertanyaan hasil dari semua informasi di halaman saat ini. Pada saat ini, setelah menyaring melalui pengobatan cacing, kembali ke pengelola acara untuk mengulangi seluruh proses.
Setelah menentukan proses keseluruhan, kembali ke langkah pertama sekarang, halaman dimuat, dan entri diterapkan.
Saat halaman dimuat, kapan kami harus memasukkan kode pembajakan? Ada beberapa status untuk dipilih. Yang pertama adalah setelah pemuatan halaman; yang kedua adalah menunggu pemuatan halaman selesai, yaitu, saat status jaringan saat ini semua menganggur, seluruh aliran eksekusi crawler berlanjut; atau untuk menentukan apakah pohon DOM dari seluruh halaman web dimuat dan diurai.
Melihat bagian koneksi permintaan, tiga masalah berikut adalah masalah yang telah mendapat perhatian baik dari komunitas crawler Web2.0 dan Web1.0. Saat Anda merayapi laman web, beberapa kode melompati laman Anda, dan bahkan mungkin dialihkan sebelum aturan dimuat.
Setiap orang memberikan solusi yang berbeda untuk masalah ini, dan beberapa orang menyarankan untuk mengkompilasi ulang kode aslinya. Ternyata ada solusi lain yaitu mekanisme plug-in yang bisa mengontrol browser di layer lain. Seperti yang ditunjukkan pada gambar di bawah, sebuah objek disediakan untuk setiap plugin browser. Sebelum seluruh browser memulai permintaan, sebuah fungsi dapat ditambahkan di sini sebelum acara dipicu untuk sesaat, sebelum halaman web dibuka.
Misalnya, saat 123 di atas akan terjadi, Anda dapat menambahkan peristiwa pemantauan untuk membalikkan semua permintaan Web halaman saat ini ke link untuk mengunci halaman. Saat halaman di-crawl, tidak ada lagi fungsi untuk melompati halaman. Ini dapat menentukan integritas seluruh halaman. Saya kira plugin yang memblokir iklan video juga menggunakan fungsi ini untuk mencapai fungsi ini.
Masalah lain yang mengganggu kami adalah semua jenis jendela pop-up yang terus-menerus muncul, dan kami bahkan mungkin mengalami beberapa perkembangan ekstrim, menambahkan beberapa parameter dan fungsi penyegaran alamat ke halaman web. Jika kita ingin memastikan bahwa crawler yang kita buat dapat menjelajah seluruh halaman dengan lancar tanpa terjebak oleh keanehan browser, kita perlu langsung membajak fungsi yang diketahui menyebabkan pemblokiran halaman web.
Saat halaman dimuat, Anda dapat mendengarkan semua acara pop-up, selama jendela muncul, lalu Anda dapat mengubah semuanya setelahnya. Mengenai fungsi waktu tunggu, kami mengembangkan fungsi asli. Saat memanggil fungsi ini, waktu secara permanen disetel ke 0. Eksekusi selanjutnya juga melalui metode ini. Setiap fungsi yang mengontrol waktu dipanggil, dan siklus hidup disetel ke 0, sehingga tidak akan Seluruh halaman web akan dibingkai karena beberapa kode yang dikembangkan.
Ada juga komunitas crawler yang sangat memperhatikan cara mendapatkan informasi permintaan AJAX.
Ada dua metode. Satu menggunakan fungsi intersepsi, yang mirip dengan proxy pemindai pasif. Browser menyediakan semua sumber daya API ini. Selama informasi permintaan jaringan dapat dicegat dan direkam dengan metode ini.
Metode kedua yang sederhana dan kasar adalah secara langsung membajak fungsi asli dengan fungsi Anda sendiri dan mencatat informasi permintaan. Di sini Anda hanya perlu membajak metode ini untuk memindai semua fungsi yang diperlukan oleh perayap.
Ketika proses pembajakan fungsi selesai, mulailah menganalisis semua informasi node dan informasi formulir di bawah seluruh halaman web. Ada dua metode praktis khusus. Misalnya, Anda dapat menelusuri semua informasi node di DOM. Selain itu, kita dapat menggunakan alat canggih yang disediakan oleh DOM untuk memfilter simpul dalam dokumen melalui aturan khusus untuk menghasilkan informasi simpul baru. Kita dapat menentukan aturan relevan yang ingin kita tangkap informasi node sebelumnya. Sebagai contoh, kita dapat memantau semua informasi yang relevan selama SRC ada di node DOM mana pun, selama informasi koneksi apa pun di halaman web atau alamat gambar berubah, Bisa ditangkap dengan metode ini.
Setelah semua informasi diperoleh melalui DOM, tidak semua informasi peristiwa perlu dipicu lagi. Kami sering menyarankan eksekusi yang cocok untuk skenario tertentu. Misalnya saat browsing beberapa website berita, Anda perlu scroll layar untuk refresh dan refresh lebih banyak berita.Teknologi di baliknya adalah metode monitoring pembalikan halaman. Misalnya, saat menggunakan beberapa kotak modal, Anda perlu mengklik tombol pada halaman web. Ini adalah acara terikat. Mengkliknya akan memunculkan kotak modal untuk memasukkan informasi. Misalnya, situs web Zhihu dan Xueqiu berbasis komunitas memiliki tugas historis di belakangnya untuk mencapai distribusi pesan waktu nyata.
Setelah mendapatkan seluruh informasi node dan informasi yang mengikat, Anda dapat memilih untuk memicu informasi peristiwa ini. Ada dua jenis informasi peristiwa pemicu, seperti yang ditunjukkan pada kode di bawah ini. Ada peristiwa di atasnya. Nama peristiwa tersebut adalah klik. Anda dapat mendeklarasikan peristiwa secara langsung melalui kode. Saat dua baris kode ini dijalankan, browser akan memunculkan popup klik. Metode sederhana dan sederhana lainnya adalah dengan mencari nilai dibalik event Nilai dibalik event binding adalah kode yang dapat dieksekusi secara langsung dengan memanggil EVAL.
Tentu saja, kami dapat mensimulasikan peristiwa apa pun. Tujuan crawler kami adalah untuk melakukan pengujian keamanan. Selama proses pengujian keamanan, jumlah permukaan serangan yang ditemukan menentukan efek pengujian keamanan secara keseluruhan. Formulir sangat penting dalam skenario web. Misalnya, halaman login dan halaman pencarian saya terkait dengan formulir selama seluruh proses pengembangan. Ada banyak cara untuk melintasi formulir, tetapi ada metode lain yang lebih mudah, yaitu dengan langsung menggunakan objek asli untuk menemukan apa yang ada di seluruh kotak masuk formulir saat ini melalui sebuah loop.
Setelah formulir dibuat, jenis parameter secara otomatis mendapatkan panjang karakter kotak input dalam formulir, dan menghasilkan nilai yang sesuai untuk setiap parameter. Pada saat yang sama, Anda dapat memanggil metode node untuk merancang nilai formulir, atau Anda dapat menggunakan metode ini untuk membantu klik tombol Pilihan. Ketika kami memiliki formulir, itu dapat diisi secara otomatis. Misalnya, jika crawler menemukan bahwa halaman adalah antarmuka login, ia dapat menentukan apakah nama kotak inputnya berisi konten ini. Jika ya, ia akan menggunakan aturan yang ditentukan di bawah untuk langsung memilih nama dari sini dan mengisinya. Ketika kami menemukan bahwa formulir terkait dengannya, kami bisa mendapatkan nama bahasa Inggris dalam aturan yang sama seperti kami, lalu menunggu @, lalu secara acak memilih daftar DOM untuk mendapatkan kotak surat dan secara otomatis mengisinya .
Setelah pengenalan seluruh proses, mari kita lihat DEMO perayap, yang terutama merayapi laman web, dan merayapi semua gambar informasi, asupan dinamis, dan elemen di laman web.
Alamat unduhan demo: https://github.com/ring04h/papers/blob/master/xianzhi_crawler_demo.mov
Akhirnya, empat sudut pandang dirangkum.
Ketika kami menemukan nomor yang terisolasi di URL, 90% kasusnya adalah parameter dinamis.
Saat merayapi ke hasil halaman, ditemukan banyak tautan yang lolos, yang memiliki konsistensi panjang yang serupa, dan metode pembuatan dibuat dengan metode lain. Kita dapat menilai berapa banyak tautan dengan panjang yang sama. Jika angka ini lebih besar dari 5 atau 10, kita harus berhati-hati karena ini adalah parameter dinamis.
Kami memecahkan masalah pseudo-statis, yang dianalisis dengan batang horizontal dan anti-batang dalam 70 hingga 80% kasus. Misalnya, tautan pertama adalah garis miring terbalik pseudo-statis, dan yang berikut adalah pseudo-statis dari bilah horizontal. Kami membagi seluruh bagian, dan jenis nilai apa yang merupakan nilai tersegmentasi. Jika plastik, itu akan mengenai yang pertama. Selama angka yang diisolasi muncul di bawah jalur tertentu, itu mungkin merupakan parameter dinamis.
Selain itu, kami menggunakan HASH untuk menghapus bug, misalnya jika mereka memiliki link yang sama di 123456789, kami hanya perlu memotong setiap parameter koneksi ini menjadi tanda kurung untuk memotong, dan terakhir melihat frekuensi kemunculannya. Jika ada banyak waktu, berarti Parameter ini adalah konstanta, dipertahankan tetap. Jika jumlah kemunculan parameter di belakang sangat acak, dengan hanya 1 dan 2, parameter di belakang jalur tersebut mungkin merupakan parameter dinamis.
Isi di atas berasal dari Konferensi Nabi Ali, diedit oleh Lei Feng.
- Mesin seribu Yuan juga tergantung pada wajah untuk makan! Rekomendasi mesin ribuan yuan dengan desain yang menakjubkan
- 4AM takut tidak lolos ke Destiny Cup, dan akan ditinggalkan sendirian? Mentalitas saya berubah, saya kurang percaya diri dari sebelumnya
- Masih mendesak untuk memperbarui Android8.0? Fitur-fitur baru dari generasi Android 9.0 selanjutnya telah diekspos!
- Zhang Yuqi dan Yuan Bayuan dicurigai telah bersatu kembali, insiden "pisau dan tebas" suami itu pun berakhir
- AI mengalahkan manusia dalam pertarungan tim Dota 2 untuk pertama kalinya; Evergrande menjadi pemegang saham terbesar FF dengan HK $ 6,746 miliar; Meituan mengajukan aplikasi IPO ke Bursa Efek Hong K
- Trailer baru "Aquaman" menunjukkan kebangkitan para pahlawan "Super 7" sutradara Wen Ziren membangun avatar kapal selam