Baru-baru ini, Habré menerbitkan sebuah artikel Mengikis situs web modern tanpa peramban tanpa kepala , dan dalam komentar disarankan bahwa tanpa peramban tanpa kepala, tidak akan berhasil untuk mendapatkan nomor telepon dari iklan di Avito atau Yulia. Saya ingin membantahnya, di bawah ini adalah skrip python yang kurang dari 100 baris kode yang berhasil mengurai "avito"
Saya bukan spesialis dalam situs "parsing" dan ini bukan pekerjaan saya, tetapi tidak jarang saya melakukan ini untuk menyelesaikan pekerjaan saya, dan bukan hanya tugas. Misalnya, Anda perlu mendapatkan saldo akun pribadi di beberapa layanan (operator seluler) yang tidak memiliki API untuk ini, atau, yang cukup menyedihkan, daftar domain dari pencatat (yang lain), yang juga tidak memiliki API.
Seperti di artikel, beberapa komentar yang mendorong saya untuk menulis posting ini, saya juga menggunakan Python dan pustaka permintaan. Jika Anda tidak dapat menemukan API "internal", Anda harus menyertakan perpustakaan BeautifulSoup. Tapi di sini semuanya ternyata jauh lebih sederhana.
Jika Anda membuka versi "lengkap" dari situs https://avito.ru, dan mencoba menyalin nomor telepon, jelas bahwa nomor telepon di situs tersebut tidak tertulis, tetapi digambar. Namun dalam versi seluler situs, nomor tersebut diberikan dalam bentuk teks. Anda dapat memeriksanya dengan melihat tanggapan saat Anda mengeklik tombol "Panggil" di alat pengembang di browser.
Saya tidak akan menganalisis skrip saya secara detail, ada cukup banyak komentar dalam kode untuk memahami apa yang terjadi dan pada tahap apa. Singkatnya, versi seluler situs digunakan, variabel untuk mencari situs dideklarasikan, serta dua variabel "key" dan "cookie", tentang mereka secara lebih rinci, kemudian proses mendapatkan cookie dengan membuka halaman utama dimulai, kemudian siklus dimulai yang mengumpulkan id dari semua iklan yang melewati semua halaman. Setelah menerima semua iklan di siklus kedua, telusuri dan dapatkan informasi yang kami minati.
Tangkapan layar dari skrip:
, .. API. - API. , , . . - . - 100 .
"key" "cookie", key , , - . cookie , "", , IP , "" .
Jika menarik, saya akan memberi tahu Anda lebih banyak tentang bagaimana saya mencari API atau saya dapat menulis contoh serupa untuk "whirligig".