Rumah pembangunan bahagian belakang Tutorial Python Kuasa Scrapy: Bagaimana untuk mengenali dan memproses kod pengesahan?

Kuasa Scrapy: Bagaimana untuk mengenali dan memproses kod pengesahan?

Jun 22, 2023 pm 03:09 PM
Kod pengesahan berurusan dengan scrapy

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:

  1. Teks CAPTCHA: Pengguna perlu menyalin dan menampal rentetan teks untuk membuktikan mereka adalah pengguna manusia dan bukan bot.
  2. Kod pengesahan nombor: Pengguna dikehendaki memasukkan nombor yang dipaparkan dalam kotak input.
  3. 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
Salin selepas log masuk

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.
  1. 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.
  2. 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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Proses operasi hos perkhidmatan WIN10 yang menduduki terlalu banyak CPU Proses operasi hos perkhidmatan WIN10 yang menduduki terlalu banyak CPU Mar 27, 2024 pm 02:41 PM

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 Chrome tidak memaparkan kod pengesahan? Apakah yang perlu saya lakukan jika Google Chrome tidak memaparkan imej kod pengesahan Chrome tidak memaparkan kod pengesahan? Mar 13, 2024 pm 08:55 PM

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

Bolehkah nombor maya menerima kod pengesahan? Bolehkah nombor maya menerima kod pengesahan? Jan 02, 2024 am 10:22 AM

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.

Panduan ringkas untuk manipulasi fail CSV Panduan ringkas untuk manipulasi fail CSV Dec 26, 2023 pm 02:23 PM

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,

Ketahui cara mengendalikan aksara khas dan menukar petikan tunggal dalam PHP Ketahui cara mengendalikan aksara khas dan menukar petikan tunggal dalam PHP Mar 27, 2024 pm 12:39 PM

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# Cara mengendalikan format data XML dan JSON dalam pembangunan C# Oct 09, 2023 pm 06:15 PM

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

Mengapa saya tidak boleh menerima kod pengesahan untuk mendaftar di Youka? Mengapa saya tidak boleh menerima kod pengesahan untuk mendaftar di Youka? Mar 03, 2024 pm 05:31 PM

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? Bagaimana untuk menggunakan JavaScript untuk melaksanakan fungsi kod pengesahan? Oct 19, 2023 am 10:46 AM

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

See all articles