


Kuasa Scrapy: Bagaimana untuk mengenali dan memproses kod pengesahan?
Scrapy ialah rangka kerja Python yang berkuasa yang membantu kami merangkak data di tapak web dengan mudah. Walau bagaimanapun, kami menghadapi masalah apabila tapak web yang ingin kami rangkak mempunyai kod pengesahan. Tujuan CAPTCHA adalah untuk menghalang perangkak automatik daripada menyerang tapak web, jadi mereka cenderung menjadi sangat kompleks dan sukar untuk dipecahkan. Dalam siaran ini, kami akan membincangkan cara menggunakan rangka kerja Scrapy untuk mengenal pasti dan memproses CAPTCHA untuk membolehkan perangkak kami memintas pertahanan ini.
Apakah itu kod pengesahan?
Captcha adalah ujian yang digunakan untuk membuktikan bahawa pengguna adalah manusia sebenar dan bukan mesin. Ia biasanya rentetan teks yang dikelirukan atau imej yang tidak boleh dibaca yang memerlukan pengguna memasukkan atau memilih perkara yang dipaparkan secara manual. CAPTCHA direka bentuk untuk menangkap bot dan skrip automatik untuk melindungi tapak web daripada serangan berniat jahat dan penyalahgunaan.
Secara amnya terdapat tiga jenis CAPTCHA:
- Teks CAPTCHA: Pengguna perlu menyalin dan menampal rentetan teks untuk membuktikan mereka adalah pengguna manusia dan bukan bot.
- Kod pengesahan nombor: Pengguna dikehendaki memasukkan nombor yang dipaparkan dalam kotak input.
- Kod pengesahan imej: Pengguna dikehendaki memasukkan aksara atau nombor daripada imej yang dipaparkan dalam kotak input Ini biasanya jenis yang paling sukar untuk dipecahkan kerana aksara atau nombor dalam imej boleh diherotkan, salah letak atau Mempunyai bunyi visual yang lain.
Mengapa anda perlu memproses kod pengesahan?
Perangkak selalunya diautomasikan pada skala besar, jadi mereka boleh dikenal pasti dengan mudah sebagai bot dan dilarang daripada tapak web daripada menuai data. CAPTCHA telah diperkenalkan untuk mengelakkan perkara ini daripada berlaku. Sebaik sahaja ep memasuki peringkat kod pengesahan, perangkak Scrapy akan berhenti menunggu input pengguna, dan oleh itu tidak boleh terus merangkak data, mengakibatkan penurunan kecekapan dan integriti perangkak.
Oleh itu, kami memerlukan cara untuk mengendalikan captcha supaya perangkak kami boleh lulus secara automatik dan meneruskan tugasnya. Biasanya kami menggunakan alat atau API pihak ketiga untuk melengkapkan pengecaman kod pengesahan ini menggunakan pembelajaran mesin dan algoritma pemprosesan imej untuk mengecam imej dan aksara, dan mengembalikan hasilnya kepada program kami.
Bagaimana untuk mengendalikan kod pengesahan dalam Scrapy?
Buka fail settings.py Scrapy, kita perlu mengubah suai medan DOWNLOADER_MIDDLEWARES dan menambah proksi berikut:
DOWNLOADER_MIDDLEWARES = {'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware': 350,>'scrapy.contrib.downloadermiddleware.cookies.CookiesMiddleware': 700 downloadermiddleware.httpproxy.HttpProxyMiddleware': 750,
'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': 400,'scrapy.contrib.downloadermiddleware.defaultheaders.DefaultHeadersMiddleware': ..contribMiddleware': 5. ajaxcrawl.AjaxCrawlMiddleware': 900,'scrapy.contrib.downloadermiddleware.httpcompression.HttpCompressionMiddleware': 800,
'scrapy.contrib.downloadermiddleware.chunked.ChunkedTransferMiddleware': 830,'scrapy.statpy 850,
'tutorial.middlewares.CaptchaMiddleware': 999}
Dalam contoh ini, kami menggunakan CaptchaMiddleware untuk mengendalikan kod pengesahan. CaptchMiddleware ialah kelas middleware tersuai yang akan mengendalikan permintaan muat turun dan memanggil API untuk mengenal pasti kod pengesahan apabila diperlukan, kemudian mengisi kod pengesahan ke dalam permintaan dan kembali untuk meneruskan pelaksanaan.
Contoh kod:
class CaptchaMiddleware(objek):
def __init__(self): self.client = CaptchaClient() self.max_attempts = 5 def process_request(self, request, spider): # 如果没有设置dont_filter则默认开启 if not request.meta.get('dont_filter', False): request.meta['dont_filter'] = True if 'captcha' in request.meta: # 带有验证码信息 captcha = request.meta['captcha'] request.meta.pop('captcha') else: # 没有验证码则获取 captcha = self.get_captcha(request.url, logger=spider.logger) if captcha: # 如果有验证码则添加到请求头 request = request.replace( headers={ 'Captcha-Code': captcha, 'Captcha-Type': 'math', } ) spider.logger.debug(f'has captcha: {captcha}') return request def process_response(self, request, response, spider): # 如果没有验证码或者验证码失败则不重试 need_retry = 'Captcha-Code' in request.headers.keys() if not need_retry: return response # 如果已经尝试过,则不再重试 retry_times = request.meta.get('retry_times', 0) if retry_times >= self.max_attempts: return response # 验证码校验失败则重试 result = self.client.check(request.url, request.headers['Captcha-Code']) if not result: spider.logger.warning(f'Captcha check fail: {request.url}') return request.replace( meta={ 'captcha': self.get_captcha(request.url, logger=spider.logger), 'retry_times': retry_times + 1, }, dont_filter=True, ) # 验证码校验成功则继续执行 spider.logger.debug(f'Captcha check success: {request.url}') return response def get_captcha(self, url, logger=None): captcha = self.client.solve(url) if captcha: if logger: logger.debug(f'get captcha [0:4]: {captcha[0:4]}') return captcha return None
Dalam middleware ini, kami telah menggunakan objek CaptchaClient sebagai middleware penyelesaian captcha, kami boleh menggunakan beberapa perisian tengah penyelesaian captcha .
Nota
Apabila melaksanakan perisian tengah ini, sila beri perhatian kepada perkara berikut:
Pengenalpastian dan pemprosesan kod pengesahan memerlukan penggunaan alat pihak ketiga atau API Kita perlu memastikan kita mempunyai lesen yang sah dan menggunakannya mengikut keperluan pengeluar.- Selepas menambah perisian tengah tersebut, proses permintaan akan menjadi lebih rumit dan pembangun perlu menguji dan nyahpepijat dengan berhati-hati untuk memastikan program itu boleh berfungsi dengan betul.
- Kesimpulan
Dengan menggunakan rangka kerja Scrapy dan perisian tengah untuk pengecaman dan pemprosesan kod pengesahan, kami boleh memintas strategi pertahanan kod pengesahan dan mencapai rangkak tapak web sasaran dengan berkesan. Kaedah ini biasanya menjimatkan masa dan usaha daripada memasukkan kod pengesahan secara manual, dan lebih cekap dan tepat. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa anda membaca dan mematuhi perjanjian lesen dan keperluan alat dan API pihak ketiga sebelum menggunakannya.
Atas ialah kandungan terperinci Kuasa Scrapy: Bagaimana untuk mengenali dan memproses kod pengesahan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

1. Mula-mula, kita klik kanan ruang kosong bar tugas dan pilih pilihan [Task Manager], atau klik kanan logo mula, dan kemudian pilih pilihan [Task Manager]. 2. Dalam antara muka Pengurus Tugas yang dibuka, kami klik tab [Perkhidmatan] di hujung kanan. 3. Dalam tab [Perkhidmatan] yang dibuka, klik pilihan [Buka Perkhidmatan] di bawah. 4. Dalam tetingkap [Services] yang terbuka, klik kanan perkhidmatan [InternetConnectionSharing(ICS)], dan kemudian pilih pilihan [Properties]. 5. Dalam tetingkap sifat yang terbuka, tukar [Buka dengan] kepada [Disabled], klik [Apply] dan kemudian klik [OK]. 6. Klik logo mula, kemudian klik butang tutup, pilih [Mulakan Semula], dan selesaikan mula semula komputer.

Apakah yang perlu saya lakukan jika Google Chrome tidak memaparkan imej kod pengesahan? Kadangkala anda memerlukan kod pengesahan untuk log masuk ke halaman web menggunakan Google Chrome. Sesetengah pengguna mendapati bahawa Google Chrome tidak dapat memaparkan kandungan imej dengan betul apabila menggunakan kod pengesahan imej. Apa yang patut dibuat? Editor di bawah akan memperkenalkan cara menangani kod pengesahan Google Chrome yang tidak dipaparkan. Saya harap ia akan membantu semua orang! Pengenalan kaedah: 1. Masukkan perisian, klik butang "Lagi" di penjuru kanan sebelah atas, dan pilih "Tetapan" dalam senarai pilihan di bawah untuk masuk. 2. Selepas memasuki antara muka baharu, klik pilihan "Tetapan Privasi dan Keselamatan" di sebelah kiri. 3. Kemudian klik "Tetapan Laman Web" di sebelah kanan

Nombor maya boleh menerima kod pengesahan Selagi nombor telefon bimbit yang diisi semasa pendaftaran mematuhi peraturan dan nombor telefon bimbit boleh disambungkan seperti biasa, anda boleh menerima kod pengesahan SMS. Walau bagaimanapun, anda perlu berhati-hati apabila menggunakan nombor telefon mudah alih maya Sesetengah tapak web tidak menyokong pendaftaran nombor telefon mudah alih maya, jadi anda perlu memilih pembekal perkhidmatan nombor telefon mudah alih maya biasa.

Ketahui cara membuka dan memproses fail format CSV dengan pantas Dengan pembangunan analisis dan pemprosesan data yang berterusan, format CSV telah menjadi salah satu format fail yang digunakan secara meluas. Fail CSV ialah fail teks yang ringkas dan mudah dibaca dengan medan data berbeza yang dipisahkan dengan koma. Sama ada dalam penyelidikan akademik, analisis perniagaan atau pemprosesan data, kami sering menghadapi situasi di mana kami perlu membuka dan memproses fail CSV. Panduan berikut akan menunjukkan kepada anda cara belajar membuka dan memproses fail format CSV dengan cepat. Langkah 1: Fahami format fail CSV Pertama,

Dalam proses pembangunan PHP, berurusan dengan aksara khas adalah masalah biasa, terutamanya dalam pemprosesan rentetan, aksara khas sering terlepas. Antaranya, menukar aksara khas kepada petikan tunggal adalah keperluan yang agak biasa, kerana dalam PHP, petikan tunggal adalah cara biasa untuk membungkus rentetan. Dalam artikel ini, kami akan menerangkan cara mengendalikan petikan tunggal penukaran aksara khas dalam PHP dan memberikan contoh kod khusus. Dalam PHP, aksara khas termasuk tetapi tidak terhad kepada petikan tunggal ('), petikan berganda ("), segaris ke belakang (), dsb. Dalam rentetan

Cara mengendalikan format data XML dan JSON dalam pembangunan C# memerlukan contoh kod khusus Dalam pembangunan perisian moden, XML dan JSON ialah dua format data yang digunakan secara meluas. XML (Extensible Markup Language) ialah bahasa penanda yang digunakan untuk menyimpan dan menghantar data, manakala JSON (JavaScript Object Notation) ialah format pertukaran data yang ringan. Dalam pembangunan C#, kami selalunya perlu memproses dan mengendalikan data XML dan JSON Artikel ini akan memfokuskan pada cara menggunakan C# untuk memproses kedua-dua format data ini dan melampirkan

Pengguna Youkazhong perlu menggunakan kod pengesahan untuk mendaftar, jadi mengapa mereka tidak boleh menerima kod pengesahan untuk mendaftar? Pengguna mungkin tidak menerima kod pengesahan kerana masalah rangkaian, masalah peranti atau masalah pelayan. Pengenalan kepada masalah pendaftaran tidak menerima kod pengesahan ini boleh memberitahu anda cara memasangnya. Berikut adalah pengenalan terperinci, datang dan lihat! Mengapa anda tidak boleh menerima kod pengesahan untuk pendaftaran di Youka Jawapan: Masalah rangkaian, masalah peralatan dan masalah pelayan membawa kepada pengenalan terperinci: 1. Penyelesaian kepada masalah rangkaian: Pengguna perlu menyemak rangkaian mereka sendiri dan boleh cuba menukar persekitaran rangkaian. Jika rangkaian lemah, kod pengesahan akan gagal dihantar. 2. Masalah peralatan: Penyelesaian: Periksa sama ada terdapat sebarang perisian yang mengganggu di latar belakang anda Anda boleh cuba memulakan semula peranti atau memasang semula perisian.

Bagaimana untuk menggunakan JavaScript untuk melaksanakan fungsi kod pengesahan? Dengan perkembangan Internet, kod pengesahan telah menjadi salah satu mekanisme keselamatan yang sangat diperlukan dalam laman web dan aplikasi. Kod pengesahan (VerificationCode) ialah teknologi yang digunakan untuk menentukan sama ada pengguna adalah manusia dan bukannya mesin. Dengan CAPTCHA, tapak web dan aplikasi boleh menghalang penyerahan spam, serangan berniat jahat, perangkak bot dan banyak lagi. Artikel ini akan memperkenalkan cara menggunakan JavaScript untuk melaksanakan fungsi kod pengesahan dan menyediakan kod tertentu
