欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python 常見的反爬蟲策略

 更新時間:2020年09月27日 16:01:57   作者:松鼠愛吃餅干  
這篇文章主要介紹了python反爬蟲策略,幫助大家更好的理解和使用python 爬蟲,感興趣的朋友可以了解下

1、判斷請求頭來進(jìn)行反爬

這是很早期的網(wǎng)站進(jìn)行的反爬方式

User-Agent 用戶代理
referer 請求來自哪里
cookie 也可以用來做訪問憑證
解決辦法:請求頭里面添加對應(yīng)的參數(shù)(復(fù)制瀏覽器里面的數(shù)據(jù))

2、根據(jù)用戶行為來進(jìn)行反爬

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

3、js加密

反爬方式中較為難處理的一類。
js加密的原理:服務(wù)器響應(yīng)給瀏覽器的js文件,可以動態(tài)的生成一些加密參數(shù),瀏覽器會根據(jù)js的計算 得到這些參數(shù),在請求中帶入進(jìn)來,如果請求中沒有這些參數(shù),那么服務(wù)器就任務(wù)請求無效。

4、字體加密

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

5、登錄驗(yàn)證碼

使用Python爬取網(wǎng)頁內(nèi)容時往往會遇到使用驗(yàn)證碼登陸才能訪問其網(wǎng)站,不同網(wǎng)站的使用的驗(yàn)證碼也不同,在最開始使用簡單驗(yàn)證碼,識別數(shù)字,但是隨著反爬的不斷發(fā)展,慢慢設(shè)計出了更多復(fù)雜的驗(yàn)證碼,比如:內(nèi)容驗(yàn)證碼、滑動驗(yàn)證碼、圖片拼接驗(yàn)證碼等等。
網(wǎng)上有很多打碼平臺,通過注冊賬號,調(diào)用平臺接口,進(jìn)行驗(yàn)證碼的驗(yàn)證。

6、md5相關(guān)知識

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

import hashlib
print(hashlib.md5('python'.encode()).hexdigest())

字符串python加密后的結(jié)果:

23eeeb4347bdd26bfc6b7ee9a3b755dd

7、base64

Base64是網(wǎng)絡(luò)上最常見的用于傳輸8Bit字節(jié)碼的編碼方式之一,Base64就是一種基于64個可打印字符來表示二進(jìn)制數(shù)據(jù)的方法。Base64編碼是從二進(jìn)制到字符的過程,可用于在HTTP環(huán)境下傳遞較長的標(biāo)識信息。采用Base64編碼具有不可讀性,需要解碼后才能閱讀。

import base64

#python中base64的加密
print(base64.b64encode('python'.encode()).decode())
#python中base64的解密
print(base64.b64decode('Y2hpbmE='.encode()).decode())

結(jié)果:

cHl0aG9u
china

二、驗(yàn)證碼驗(yàn)證

自己動手看驗(yàn)證碼(古詩詞網(wǎng))

import requests

url = "gushiwen.org"

session = requests.Session()

text = session.get(url).text

# 解析響應(yīng),找到驗(yàn)證碼的圖片地址,
# 下載驗(yàn)證碼圖片,保存
with open('code.jpg', 'wb')as f:
  f.write('驗(yàn)證碼的url地址'.encode())

code = input('驗(yàn)證碼是: ')

login_url = "login.com"

data = {
  "username": 'xx',
  "password": 'xx',
  "code": code
}
requests.post(url, data=data)

使用打碼平臺(圖鑒)

新建一個captcha_api.py

import json
import requests
import base64
from io import BytesIO
from PIL import Image
from sys import version_info


def base64_api(uname, pwd, img):
  img = img.convert('RGB')
  buffered = BytesIO()
  img.save(buffered, format="JPEG")
  if version_info.major >= 3:
    b64 = str(base64.b64encode(buffered.getvalue()), encoding='utf-8')
  else:
    b64 = str(base64.b64encode(buffered.getvalue()))
  data = {"username": uname, "password": pwd, "image": b64}
  result = json.loads(requests.post("http://api.ttshitu.com/base64", json=data).text)
  if result['success']:
    return result["data"]["result"]
  else:
    return result["message"]
  return ""


def request_captcha(uname, pwd, img_path):
  img_path = img_path # 待驗(yàn)證的驗(yàn)證碼路徑
  img = Image.open(img_path)
  result = base64_api(uname, pwd, img)
  # 傳入賬號 密碼 和圖片
  print(result)

新建use_code.py,調(diào)用接口

img_path = '圖片路徑'

from captcha_api import request_captcha

ret = request_captcha("賬號", "密碼", img_path)

以上就是python 常見的反爬蟲策略的詳細(xì)內(nèi)容,更多關(guān)于python反爬蟲的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于Python編寫一個簡單的端口掃描器

    基于Python編寫一個簡單的端口掃描器

    端口掃描是非常實(shí)用的,不止用在信息安全方面,日常的運(yùn)維也用得到。本文將利用Python編寫一個簡單的端口掃描器,需要的可以參考一下
    2022-04-04
  • Selenium及python實(shí)現(xiàn)滾動操作多種方法

    Selenium及python實(shí)現(xiàn)滾動操作多種方法

    這篇文章主要介紹了Selenium及python實(shí)現(xiàn)滾動操作多種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • python 自動批量打開網(wǎng)頁的示例

    python 自動批量打開網(wǎng)頁的示例

    今天小編就為大家分享一篇python 自動批量打開網(wǎng)頁的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • 簡單實(shí)例帶你了解Python的編譯和執(zhí)行全過程

    簡單實(shí)例帶你了解Python的編譯和執(zhí)行全過程

    python 是一種解釋型的編程語言,所以不像編譯型語言那樣需要顯式的編譯過程。然而,在 Python 代碼執(zhí)行之前,它需要被解釋器轉(zhuǎn)換成字節(jié)碼,這個過程就是 Python 的編譯過程,還不知道的朋友快來看看吧
    2023-04-04
  • Python實(shí)現(xiàn)快速大文件比較代碼解析

    Python實(shí)現(xiàn)快速大文件比較代碼解析

    這篇文章主要介紹了Python實(shí)現(xiàn)快速大文件比較代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • Python使用open函數(shù)的buffering設(shè)置文件緩沖方式

    Python使用open函數(shù)的buffering設(shè)置文件緩沖方式

    這篇文章主要介紹了Python使用open函數(shù)的buffering設(shè)置文件緩沖方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python查找文件中包含中文的行方法

    Python查找文件中包含中文的行方法

    今天小編就為大家分享一篇Python查找文件中包含中文的行方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Pandas時間序列:時期(period)及其算術(shù)運(yùn)算詳解

    Pandas時間序列:時期(period)及其算術(shù)運(yùn)算詳解

    今天小編就為大家分享一篇Pandas時間序列:時期(period)及其算術(shù)運(yùn)算詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python如何從鍵盤獲取輸入實(shí)例

    python如何從鍵盤獲取輸入實(shí)例

    在本篇內(nèi)容中小編給各位整理的是關(guān)于python怎么從鍵盤獲取輸入的實(shí)例內(nèi)容,需要的朋友們可以參考下。
    2020-06-06
  • 詳解用selenium來下載小姐姐圖片并保存

    詳解用selenium來下載小姐姐圖片并保存

    這篇文章主要介紹了詳解用selenium來下載小姐姐圖片并保存,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評論