


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!

手机收不到验证码是网络问题、手机设置问题、手机运营商问题和个人设置问题导致的。详情介绍:1、网络问题,手机所处的网络环境不稳定或者信号弱,就有可能导致验证码无法及时送达;2、手机设置问题,不小心将手机的短信或语音功能关闭,或者将验证码的发送号码加入到黑名单中,从而导致验证码无法正常收到;3、手机运营商问题,手机运营商可能会出现故障或者维护,导致验证码无法及时送达等等。

PHP图片处理案例:如何实现图片的验证码功能随着互联网的快速发展,验证码成为了保护网站安全的重要手段之一。验证码是一种通过图像识别技术来确定用户是否为真实用户的验证方式。本文将介绍如何使用PHP来实现图片的验证码功能,并附带代码示例。简介验证码是一张包含随机字符的图片,用户需要输入图片中的字符才能通过验证。实现验证码的主要过程包括生成随机字符、绘制字符到图片

“最烦登网站时各种奇奇怪怪(甚至变态)的验证码了。”现在,有一个好消息和一个坏消息。好消息就是:AI可以帮你代劳这件事了。不信你瞧,以下是三张识别难度依次递增的真实案例:而这些是一个名为“Pix2Struct”的模型给出的答案:全部准确无误、一字不差有没有?有网友感叹:确定,准确性比我强。所以可不可以做成浏览器插件??不错,有人表示:别看这几个案例相比还算简单,但凡微调一下,我都不敢想象其效果有多厉害了。所以,坏消息就是——验证码马上就要拦不住机器人了!(危险危险危险……)如何做到?Pix2St

随着互联网的发展和智能手机的普及,验证码登录功能被越来越多的网站和应用程序采用。验证码登录是一种通过输入正确的验证码来验证用户身份的登录方式,以提高安全性和防止恶意攻击。在PHP开发中,实现简单的验证码登录功能并不复杂,可以通过以下步骤来完成。创建数据库表首先,我们需要在数据库中创建一个用于存储验证码信息的表。表结构可以包含以下字段:id:自增主键phon

今天我在给大家分享一个OCR应用——ddddocr自动识别验证码。前面4个d是“带带弟弟”的首拼音。[/笑哭]。项目地址:https://github.com/sml2h3/ddddocr。使用的时候用pip命令直接安装即可pipinstallddddocr。OCR的核心技术包含两方面,一是目标检测模型检测图片中的文字,二是文字识别模型,将图片中的文字转成文本文字。第一类验证码最简单,它们没有复杂的背景图片,所以目标检测模型可以省略,直接将图片送入文字识别模型即可。识别代码如下:impor

如何使用PHP创建验证码图片?验证码(CAPTCHA)是一种常用的验证用户是否为人而不是机器的方法。在网站上,我们经常会看到验证码图片,要求用户输入图片上显示的随机字符或数字,以完成登录、注册、评论等操作。本文将介绍如何使用PHP创建验证码图片,并提供具体的代码示例。一、PHPGD库要创建验证码图片,我们需要使用PHP的GD库。GD库是一个用于处理图像的扩

react实现手机验证码的方法:1、下载antd button和input组件;2、通过“<Input className={`apiMobileInput`} disabled value={this.props.phoneNumber} />”获取客户的手机号;3、通过“await this.props.sendCode({...})”实现获取验证码即可。

如何使用JavaScript实现验证码功能?随着网络的发展,验证码已经成为了网站和应用程序中不可或缺的安全机制之一。验证码(VerificationCode)是一种用于判断用户是否为人类而不是机器的技术。通过验证码,网站和应用程序可以防止垃圾信息提交、恶意攻击、机器人爬虫等问题。本文将介绍如何使用JavaScript实现验证码功能,并提供具体的代码


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

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

Dreamweaver Mac版
Alat pembangunan web visual

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),