Python爬蟲反爬手段講解

2020-09-07 松鼠愛吃餅乾

反爬方式的種類

1、判斷請求頭來進行反爬

這是很早期的網站進行的反爬方式

  • User-Agent 用戶代理
  • referer 請求來自哪裡
  • cookie 也可以用來做訪問憑證

解決辦法:請求頭裡面添加對應的參數(複製瀏覽器裡面的數據)

2、根據用戶行為來進行反爬

  • 請求頻率過高,伺服器設置規定時間之內的請求閾值
    解決辦法:降低請求頻率或者使用代理(IP代理)
  • 網頁中設置一些陷阱(正常用戶訪問不到但是爬蟲可以訪問到)
    解決辦法:分析網頁,避開這些特殊陷阱
  • 請求間隔太短,返回相同的數據
    解決辦法:增加請求間隔

3、js加密

反爬方式中較為難處理的一類。
js加密的原理:伺服器響應給瀏覽器的js文件,可以動態的生成一些加密參數,瀏覽器會根據js的計算 得到這些參數,在請求中帶入進來,如果請求中沒有這些參數,那麼伺服器就任務請求無效。

4、字體加密

字體反爬,是一種常見的反爬技術,網站採用了自定義的字體文件,在瀏覽器上正常顯示,但是爬蟲抓取下來的數據要麼就是亂碼,要麼就是變成其他字符。採用自定義字體文件是CSS3的新特性,熟悉前端的同學可能知道,就是font-face屬性。

5、登錄驗證碼

使用Python爬取網頁內容時往往會遇到使用驗證碼登陸才能訪問其網站,不同網站的使用的驗證碼也不同,在最開始使用簡單驗證碼,識別數字,但是隨著反爬的不斷發展,慢慢設計出了更多複雜的驗證碼,比如:內容驗證碼、滑動驗證碼、圖片拼接驗證碼等等。
網上有很多打碼平臺,通過註冊帳號,調用平臺接口,進行驗證碼的驗證。

6、md5相關知識

MD5,消息摘要算法,一種被廣泛使用的密碼散列函數,可以產生出一個128位(16位元組)的散列值(hash value),用於確保信息傳輸完整一致。MD5是最常見的摘要算法,速度很快,生成結果是固定的128 bit字節,通常用一個32位的16進位字符串表示。MD5的特點:
1.不可逆:不能從密文推導出明文。
2.不管明文長度為多少,密文的長度都固定。
3.密文之間不會重複。

import hashlibprint(hashlib.md5(&39;.encode()).hexdigest())

字符串python加密後的結果:

23eeeb4347bdd26bfc6b7ee9a3b755dd

7、base64

Base64是網絡上最常見的用於傳輸8Bit字節碼的編碼方式之一,Base64就是一種基於64個可列印字符來表示二進位數據的方法。Base64編碼是從二進位到字符的過程,可用於在HTTP環境下傳遞較長的標識信息。採用Base64編碼具有不可讀性,需要解碼後才能閱讀。

import base6439;python&python中base64的解密print(base64.b64decode(&39;.encode()).decode())

結果:

cHl0aG9u
china

二、驗證碼驗證

自己動手看驗證碼(古詩詞網)

import requestsurl = &34;session = requests.Session()text = session.get(url).text  下載驗證碼圖片,保存with open(&39;, &39;)as f:    f.write(&39;.encode())code = input(&39;)login_url = &34;data = {    &34;: &39;,    &34;: &39;,    &34;: code}requests.post(url, data=data)

使用打碼平臺(圖鑑)

新建一個captcha_api.py

import jsonimport requestsimport base64from io import BytesIOfrom PIL import Imagefrom sys import version_infodef base64_api(uname, pwd, img):    img = img.convert(&39;)    buffered = BytesIO()    img.save(buffered, format=&34;)    if version_info.major >= 3:        b64 = str(base64.b64encode(buffered.getvalue()), encoding=&39;)    else:        b64 = str(base64.b64encode(buffered.getvalue()))    data = {&34;: uname, &34;: pwd, &34;: b64}    result = json.loads(requests.post(&34;, json=data).text)    if result[&39;]:        return result[&34;][&34;]    else:        return result[&34;]    return &34;def request_captcha(uname, pwd, img_path):    img_path = img_path    傳入帳號 密碼 和圖片    print(result)

新建use_code.py,調用接口

img_path = &39;from captcha_api import request_captcharet = request_captcha(&34;, &34;, img_path)

相關焦點

  • python爬蟲反爬機制探索
    #python爬蟲篇#前幾次的爬蟲文章講到了去爬某度,說實話!某都對初學朋友還是很友好的!只要幾行代碼就搞定了,至少有東西呈現給你,是不是你需要內容的還需要你再下功夫!:http://www.douban.com執行url = http://www.douban.comre = urllib.request.urlopen(url)回車後就出現了一下的錯誤提示:urllib.error.HTTPError: HTTP Error 418:上面最後一行信息告訴我們,我們的目標網站有反爬機制
  • Python爬蟲進階(一):反爬技術
    打個比方,主人(網站)邀請你去喝喜酒(訪問),你卻從後門(爬蟲)進來,主人沒收到你給的隨禮(付費內容等),迎賓(網站流量)也沒統計到你進了主人府上。爬蟲不比真正的用戶訪問,所以即使被爬取的網頁是公開掛在網際網路上的也不是你理直氣壯說爬就爬的理由。
  • 細說小白學python爬蟲過程中常見的反爬措施及解決思路(乾貨)
    最近有很多朋友和我討論python爬蟲遇到的反爬措施及解決辦法,今天我就給大家分享一下自己在爬蟲過程中遇到的坑及解決思路,希望對大家有所幫助。​看不見的反爬措施一是加header頭部信息:什麼是header頭?
  • Python爬蟲總是失敗?整理常見反爬與對策,建議收藏轉發
    前言:爬蟲本身會對網站增加一定的壓力,所以也應該合理設定爬取速率,儘量避免對目標網站造成麻煩,影響網站正常使用,一定注意自己爬蟲的姿勢。也要注意不要利用爬蟲非法盈利,不要爬取公民個人信息。基於身份識別進行反爬基於爬蟲行為進行反爬基於數據加密進行反爬一、 常見基於身份識別進行反爬
  • 你不知道的網絡爬蟲編程那些事!爬蟲與反爬的戰爭一直在無聲發生
    毫無懸念,他們會使用爬蟲技術來爬取所有相關電商的價格。他們的爬蟲還是比較溫柔的,對大家的伺服器不會造成太大的壓力。然而,這並不意味著大家喜歡被他爬取。畢竟這對其他電商是不利的。於是需要通過技術手段來做反爬蟲。
  • Python爬蟲:爬取虎牙星秀主播圖片
    動態爬取思路講解導入需要的python模塊通過爬蟲獲得的主播圖片在Pycharm中所敲的代碼動態爬取思路講解1.簡單的爬蟲只需要訪問網站搜索欄處的url,就可以在開發者工具(F12)處,利用正則表達式、Xpath、css等進行定位並抓取數據;2.虎牙星秀頁面不同於簡單的網頁
  • Python爬蟲——大眾點評svg反爬
    學爬蟲有大半年,僅僅會一些基礎的爬蟲,對一些反爬有深度的反爬就over了,最近在學svg反爬與字體反爬,然後用PS:如有需要Python學習資料的小夥伴可以加點擊下方連結自行獲取python2.引入庫requests庫相對於urllib3庫是非常強大的,驗證了那句青出於藍而勝於藍;lxml庫在這裡主要用於xpath;re當然是強大的正則了,我以前爬蟲是主要是
  • python爬蟲零基礎入門——反爬的簡單說明
    之前在《如何開始寫你的第一個python腳本——簡單爬蟲入門!》中給大家分享了一下寫一個爬蟲腳本的基本步驟,今天繼續分享給大家在初期遇到的一個很煩人的問題——反爬及處理辦法!我們的工具及庫為:python3.6、pycharm、requests庫基本步驟:獲取網頁原始碼——匹配需要的內容——提取並保存。
  • python爬蟲29 | 使用scrapy爬取糗事百科
    是時候給你說說爬蟲框架了使用框架來爬取數據會節省我們更多時間很快就能抓取到我們想要抓取的內容就跟你說說scrapy這個框架到底有多牛b那麼接下來就是學習 pythonscrapy 爬蟲項目比如在這裡我們要創建一個 qiushibaike 的爬蟲項目就可以這樣 scrapy 
  • Python爬蟲實戰:2020最新BOOS直聘爬取教程
    Python爬蟲實戰:2020最新BOOS直聘爬取教程前言完整代碼及注釋分析圖片輔助分析運行結果更多爬蟲教程關注我前言來到BOOS直聘搜索python失策失策,以前爬取別的網站從沒有這麼嚴格的反爬蟲機制,沒到到翻車了
  • Python爬蟲「學前班」!別踩坑了!輕鬆爬取大規模數據
    前言爬蟲應用的廣泛,例如搜尋引擎、採集數據、廣告過濾、數據分析等。當我們對少數網站內容進行爬取時寫多個爬蟲還是有可能的,但是對於需要爬取多個網站內容的項目來說是不可能編寫多個爬蟲的,這個時候我們就需要智能爬蟲。
  • Python多進程爬蟲爬取愛奇藝vip視頻
    文章目錄一、基本思路二、selenium爬蟲三、查看數據一、基本思路目標url:https://www.lagou.com/用selenium爬蟲實現,輸入任意關鍵字,比如 python 數據分析,點擊搜索,得到的有關崗位信息,爬取下來保存到Excel。
  • 聊聊學python轉行、具體學習方法、自學python用於辦公、寫爬蟲等...
    爬蟲不可能很簡單的,理由有三點:①技術細節暫且先略過,直接從經濟和成本的角度來說。網站或者app的運營者是不希望自己的網站被爬蟲大規模爬取的。因為爬蟲不是用戶,它採集信息的時候又不能帶來購買和消費,反而會增加伺服器的壓力,提高運營成本。而且這些信息經過整理都是非常具有商業價值的,為什麼要任由別人爬取呢。
  • 爬蟲大戰!如何反爬抓「蟲」?
    根據用途,網絡爬蟲分為兩類:一類是善意爬蟲,如百度、谷歌等搜尋引擎;另一類是惡意爬蟲,如黃牛佔票軟體。從實踐來看,惡意爬蟲的主要目標是有價值的網際網路數據。 早期爬蟲程序非常簡單,快速爬取想要的內容,沒有偽裝。
  • python 爬蟲學習路線:從入門到進階
    本文依舊需要有一些python基礎,至少要求掌握python語法。前置條件:python開發環境首先,學習python爬蟲,需要會:自己安裝python,python庫以及自己的編輯器。這個前置條件呢,在涼拌以前的文章寫過,這裡涼拌就不再贅述,不會的同學可以點下面的連結看一看。
  • 13天搞定python網絡爬蟲
    什麼是爬蟲?網絡爬蟲也叫網絡蜘蛛,如果把網際網路比喻成一個蜘蛛網,那麼蜘蛛就是在網上爬來爬去的蜘蛛,爬蟲程序通過請求url地址,根據響應的內容進行解析採集數據, 比如:如果響應內容是html,分析dom結構,進行dom解析、或者正則匹配,如果響應內容是xml/json數據,就可以轉數據對象,然後對數據進行解析。
  • Python爬蟲是如何從入門到入土的。(1)
    我要分享的是我對python爬蟲的方向發展的研究。首先從爬蟲大小來分類:最小的網頁爬蟲:對於我而言這類爬蟲能解決我實際生活中百分之90的問題。我做的一個最簡單爬取貓貓圖片的爬蟲scrapy框架爬蟲:用於整站式爬取。
  • python爬蟲senlenium爬取拉勾網招聘數據
    目標url:https://www.lagou.com/用selenium爬蟲實現,輸入任意關鍵字,比如 python 數據分析,點擊搜索,得到的有關崗位信息,爬取下來保存到Excel二、selenium爬蟲from selenium import webdriverimport timeimport loggingimport randomimport
  • python爬蟲系列教程,用python爬取全國範圍內的KFC店地址
    下面羽憶教程教你會python爬取全國範圍內的KFC店地址,這是一篇python爬蟲系列的教程,簡單又能讓人填飽肚子。python爬蟲介紹python發展至今,python爬蟲已經成為了一種職業,因為其可以幫助企業快速得到網絡上的最新信息,但是為什麼很多寫python爬蟲的程式設計師會面臨牢獄之災呢?
  • 最全的 Python 反爬蟲及應對方案!
    爬蟲是 Python 的一個常見應用場景,很多練習項目就是讓大家去爬某某網站。爬取網頁的時候,你大概率會碰到一些反爬措施。這種情況下,你該如何應對呢?本文梳理了常見的反爬措施和應對方案。 1.反爬方式:創建無限深度的目錄結構HTTP://example.com/bar/foo/bar/foo/bar/foo/bar /動態頁面,為網絡爬蟲生成無限數量的文檔。如由算法生成雜亂的文章頁面。文檔中填充了大量字符,使解析文檔的詞法分析器崩潰。