Python反爬蟲(chóng)偽裝瀏覽器進(jìn)行爬蟲(chóng)
對(duì)于爬蟲(chóng)中部分網(wǎng)站設(shè)置了請(qǐng)求次數(shù)過(guò)多后會(huì)封殺ip,現(xiàn)在模擬瀏覽器進(jìn)行爬蟲(chóng),也就是說(shuō)讓服務(wù)器認(rèn)識(shí)到訪(fǎng)問(wèn)他的是真正的瀏覽器而不是機(jī)器操作
簡(jiǎn)單的直接添加請(qǐng)求頭,將瀏覽器的信息在請(qǐng)求數(shù)據(jù)時(shí)傳入:
打開(kāi)瀏覽器--打開(kāi)開(kāi)發(fā)者模式--請(qǐng)求任意網(wǎng)站
如下圖:找到請(qǐng)求的的名字,打開(kāi)后查看headers欄,找到User-Agent,復(fù)制。然后添加到請(qǐng)求頭中
代碼如下:
import requestsurl = ’https://www.baidu.com’headers ={ ’User-Agent’:’Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) ’ ’Chrome/65.0.3325.181 Safari/537.36’ }rq = requests.get(url=url, headers=headers)print(rq.text)
更深的偽裝瀏覽器,添加多個(gè)瀏覽器信息,每次請(qǐng)求的時(shí)候隨機(jī)發(fā)送瀏覽器信息,讓服務(wù)器了解不是一個(gè)瀏覽器一直在訪(fǎng)問(wèn),(可以百度查找user-agent)
代碼如下:
import requestsimport randomurl = ’https://www.baidu.com’headers_lists =( ’Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) ’ ’Chrome/65.0.3325.181 Safari/537.36’, ’Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;Maxthon2.0’, ’Opera/9.80(Android2.3.4;Linux;Operamobi/adr-1107051709;U;zh-cn)Presto/2.8.149Version/11.10’, ’Mozilla/5.0(WindowsNT6.1;rv:2.0.1)Gecko/20100101Firefox/4.0.1’, ’Mozilla/5.0(Android;Linuxarmv7l;rv:5.0)Gecko/Firefox/5.0fennec/5.0’,)rq = requests.get(url=url,headers={’User-Agent’:random.choice(headers_lists)})print(rq.text)
完整的請(qǐng)求體解釋?zhuān)?/p>
以下是筆者訪(fǎng)問(wèn)百度的請(qǐng)求體。
Accept:瀏覽器端可以接受的媒體類(lèi)型
Accept-Encoding:瀏覽器申明自己接收的編碼方法
Accept-Language:瀏覽器申明自己接收的語(yǔ)言
Connection:keep-alive 客戶(hù)端和服務(wù)器之間還在連接中,如果關(guān)閉就是close
Host:請(qǐng)求報(bào)頭域主要用于指定被請(qǐng)求資源的Internet主機(jī)和端口號(hào)
User-Agent:使用的操作系統(tǒng)和瀏覽器的名稱(chēng)和版本
Cookie:是用來(lái)存儲(chǔ)一些用戶(hù)信息以便讓服務(wù)器辨別用戶(hù)身份的
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Python如何實(shí)現(xiàn)感知器的邏輯電路2. Python getsizeof()和getsize()區(qū)分詳解3. JS實(shí)現(xiàn)表單中點(diǎn)擊小眼睛顯示隱藏密碼框中的密碼4. vue實(shí)現(xiàn)移動(dòng)端返回頂部5. asp讀取xml文件和記數(shù)6. python基于scrapy爬取京東筆記本電腦數(shù)據(jù)并進(jìn)行簡(jiǎn)單處理和分析7. 原生js實(shí)現(xiàn)的觀(guān)察者和訂閱者模式簡(jiǎn)單示例8. Python ellipsis 的用法詳解9. 在終端啟動(dòng)Python時(shí)報(bào)錯(cuò)的解決方案10. JS錯(cuò)誤處理與調(diào)試操作實(shí)例分析
