浅谈爬虫及绕过网站反爬取机制
【相关学习推荐:网站制作视频教程】
爬虫是什么呢,简单而片面的说,爬虫就是由计算机自动与服务器交互获取数据的工具。爬虫的最基本就是get一个网页的源代码数据,如果更深入一些,就会出现和网页进行POST交互,获取服务器接收POST请求后返回的数据。一句话,爬虫用来自动获取源数据,至于更多的数据处理等等是后续的工作,这篇文章主要想谈谈爬虫获取数据的这一部分。爬虫请注意网站的Robot.txt文件,不要让爬虫违法,也不要让爬虫对网站造成伤害。
反爬及反反爬概念的不恰当举例
基于很多原因(如服务器资源,保护数据等),很多网站是限制了爬虫效果的。
考虑一下,由人来充当爬虫的角色,我们怎么获取网页源代码?最常用的当然是右键源代码。
网站屏蔽了右键,怎么办?
拿出我们做爬虫中最有用的东西 F12(欢迎讨论)
同时按下F12就可以打开了(滑稽)
源代码出来了!!
在把人当作爬虫的情况下,屏蔽右键就是反爬取策略,F12就是反反爬取的方式。
讲讲正式的反爬取策略
事实上,在写爬虫的过程中一定出现过没有返回数据的情况,这种时候也许是服务器限制了UA头(user-agent),这就是一种很基本的反爬取,只要发送请求的时候加上UA头就可以了…是不是很简单?
其实一股脑把需要不需要的Request Headers都加上也是一个简单粗暴的办法……
有没有发现网站的验证码也是一个反爬取策略呢?为了让网站的用户能是真人,验证码真是做了很大的贡献。随验证码而来的,验证码识别出现了。
说到这,不知道是先出现了验证码识别还是图片识别呢?
简单的验证码现在识别起来是非常简单的,网上有太多教程,包括稍微进阶一下的去噪,二值,分割,重组等概念。可是现在网站人机识别已经越发的恐怖了起来,比如这种:
简单讲述一下去噪二值的概念
将一个验证码
变成
就是二值,也就是将图片本身变成只有两个色调,例子很简单,通过python PIL库里的
Image.convert("1")
就能实现,但如果图片变得更为复杂,还是要多思考一下,比如
如果直接用简单方式的话 就会变成
思考一些这种验证码应该怎么识别?这种时候 去噪 就派上了用处,根据验证码本身的特征,可以计算验证码的底色和字体之外的RGB值等,将这些值变成一个颜色,将字体留出。示例代码如下,换色即可
for x in range(0,image.size[0]): for y in range(0,image.size[1]): # print arr2[x][y] if arr[x][y].tolist()==底色: arr[x][y]=0 elif arr[x][y].tolist()[0] in range(200,256) and arr[x][y].tolist()[1] in range(200,256) and arr[x][y].tolist()[2] in range(200,256): arr[x][y]=0 elif arr[x][y].tolist()==[0,0,0]: arr[x][y]=0 else: arr[x][y]=255
arr是由numpy得到的,根据图片RGB值得出的矩阵,读者可以自己尝试完善代码,亲自实验一下。
细致的处理之后图片可以变成
识别率还是很高的。
在验证码的发展中,还算清晰的数字字母,简单的加减乘除,网上有轮子可以用,有些难的数字字母汉字,也可以自己造轮子(比如上面),但更多的东西,已经足够写一个人工智能了……(有一种工作就是识别验证码…)
再加一个小提示:有的网站PC端有验证码,而手机端没有…
下一个话题!
反爬取策略中比较常见的还有一种封IP的策略,通常是短时间内过多的访问就会被封禁,这个很简单,限制访问频率或添加IP代理池就OK了,当然,分布式也可以…
IP代理池->左转Google右转baidu,有很多代理网站,虽然免费中能用的不多 但毕竟可以。
还有一种也可以算作反爬虫策略的就是异步数据,随着对爬虫的逐渐深入(明明是网站的更新换代!),异步加载是一定会遇见的问题,解决方式依然是F12。以不愿透露姓名的网易云音乐网站为例,右键打开源代码后,尝试搜索一下评论
数据呢?!这就是JS和Ajax兴起之后异步加载的特点。但是打开F12,切换到NetWork选项卡,刷新一下页面,仔细寻找,没有秘密。
哦,对了 如果你在听歌的话,点进去还能下载呢…
仅为对网站结构的科普,请自觉抵制盗版,保护版权,保护原创者利益。
如果说这个网站限制的你死死的,怎么办?我们还有最后一计,一个强无敌的组合:selenium + PhantomJs
这一对组合非常强力,可以完美模拟浏览器行为,具体的用法自行百度,并不推荐这种办法,很笨重,此处仅作为科普。
Atas ialah kandungan terperinci 浅谈爬虫及绕过网站反爬取机制. 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



Masa yang diperlukan untuk mempelajari crawler Python berbeza dari orang ke orang dan bergantung pada faktor seperti keupayaan pembelajaran peribadi, kaedah pembelajaran, masa pembelajaran dan pengalaman. Mempelajari crawler Python bukan sekadar mempelajari teknologi itu sendiri, tetapi juga memerlukan kemahiran mengumpul maklumat yang baik, kemahiran menyelesaikan masalah dan kemahiran kerja berpasukan. Melalui pembelajaran dan latihan berterusan, anda akan berkembang secara beransur-ansur menjadi pembangun perangkak Python yang cemerlang.

Dalam era digital, media sosial telah menjadi sebahagian daripada kehidupan orang ramai. Twitter adalah salah satu daripadanya, dengan ratusan juta pengguna berkongsi pelbagai maklumat mengenainya setiap hari. Untuk beberapa penyelidikan, analisis, promosi dan keperluan lain, adalah sangat perlu untuk mendapatkan data yang berkaitan di Twitter. Artikel ini akan memperkenalkan cara menggunakan PHP untuk menulis perangkak Twitter yang mudah untuk merangkak beberapa data berkaitan kata kunci dan menyimpannya dalam pangkalan data. 1. TwitterAPI disediakan oleh Twitter

Dalam pembangunan perangkak, pengendalian kuki selalunya merupakan bahagian yang penting. Sebagai mekanisme pengurusan keadaan dalam HTTP, kuki biasanya digunakan untuk merekodkan maklumat log masuk pengguna dan tingkah laku mereka adalah kunci untuk perangkak untuk mengendalikan pengesahan pengguna dan mengekalkan status log masuk. Dalam pembangunan perangkak PHP, pengendalian kuki memerlukan penguasaan beberapa kemahiran dan memberi perhatian kepada beberapa perangkap. Di bawah ini kami menerangkan secara terperinci cara mengendalikan kuki dalam PHP. 1. Bagaimana untuk mendapatkan Cookie semasa menulis dalam PHP

Analisis masalah biasa dan penyelesaian untuk perangkak PHP Pengenalan: Dengan perkembangan pesat Internet, pemerolehan data rangkaian telah menjadi pautan penting dalam pelbagai bidang. Sebagai bahasa skrip yang digunakan secara meluas, PHP mempunyai keupayaan hebat dalam pemerolehan data Salah satu teknologi yang biasa digunakan ialah perangkak. Walau bagaimanapun, dalam proses membangunkan dan menggunakan perangkak PHP, kami sering menghadapi beberapa masalah. Artikel ini akan menganalisis dan memberikan penyelesaian kepada masalah ini dan memberikan contoh kod yang sepadan. 1. Perihalan masalah bahawa data halaman web sasaran tidak dapat dihuraikan dengan betul.

Amalan perangkak Java: Cara merangkak data halaman web dengan cekap Pengenalan: Dengan perkembangan pesat Internet, sejumlah besar data berharga disimpan dalam pelbagai halaman web. Untuk mendapatkan data ini, selalunya perlu untuk mengakses setiap halaman web secara manual dan mengekstrak maklumat satu demi satu, yang sudah pasti tugas yang membosankan dan memakan masa. Untuk menyelesaikan masalah ini, orang ramai telah membangunkan pelbagai alat crawler, antaranya Java crawler adalah salah satu yang paling biasa digunakan. Artikel ini akan membawa pembaca memahami cara menggunakan Java untuk menulis perangkak web yang cekap dan menunjukkan amalan melalui contoh kod tertentu. 1. Pangkal reptilia

Dengan perkembangan pesat teknologi Internet, aplikasi Web semakin digunakan dalam kerja dan kehidupan harian kita. Dalam proses pembangunan aplikasi web, merangkak data halaman web adalah tugas yang sangat penting. Walaupun terdapat banyak alat pengikis web di pasaran, alat ini tidak begitu cekap. Untuk meningkatkan kecekapan merangkak data halaman web, kami boleh menggunakan gabungan PHP dan Selenium. Pertama, kita perlu memahami apa itu PHP dan Selenium. PHP adalah kuat

Pasaran saham sentiasa menjadi topik yang sangat membimbangkan. Kenaikan, kejatuhan dan perubahan saham harian secara langsung mempengaruhi keputusan pelabur. Jika anda ingin memahami perkembangan terkini dalam pasaran saham, anda perlu mendapatkan dan menganalisis maklumat saham tepat pada masanya. Kaedah tradisional adalah membuka laman web kewangan utama secara manual untuk melihat data saham satu persatu Kaedah ini jelas terlalu rumit dan tidak cekap. Pada masa ini, perangkak telah menjadi penyelesaian yang sangat cekap dan automatik. Seterusnya, kami akan menunjukkan cara menggunakan PHP untuk menulis program perangkak stok mudah untuk mendapatkan data stok. benarkan

Bilibili ialah tapak web video bertubi-tubi yang popular di China, dan ia juga merupakan harta karun, yang mengandungi semua jenis data. Antaranya, data benteng adalah sumber yang sangat berharga, begitu ramai penganalisis dan penyelidik data berharap untuk mendapatkan data ini. Dalam artikel ini, saya akan memperkenalkan penggunaan bahasa PHP untuk merangkak data benteng Bilibili. Kerja penyediaan Sebelum mula merangkak data benteng, kita perlu memasang rangka kerja perangkak PHP Symphony2. Anda boleh masuk melalui arahan berikut
