91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python 常見的反爬蟲策略

發布時間:2020-10-08 20:20:49 來源:腳本之家 閱讀:198 作者:松鼠愛吃餅干 欄目:開發技術

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

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

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

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

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

3、js加密

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

python 常見的反爬蟲策略

4、字體加密

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

python 常見的反爬蟲策略

5、登錄驗證碼

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

python 常見的反爬蟲策略

6、md5相關知識

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

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

字符串python加密后的結果:

23eeeb4347bdd26bfc6b7ee9a3b755dd

7、base64

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

import base64

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

結果:

cHl0aG9u
china

二、驗證碼驗證

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

import requests

url = "gushiwen.org"

session = requests.Session()

text = session.get(url).text

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

code = input('驗證碼是: ')

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 # 待驗證的驗證碼路徑
  img = Image.open(img_path)
  result = base64_api(uname, pwd, img)
  # 傳入賬號 密碼 和圖片
  print(result)

新建use_code.py,調用接口

img_path = '圖片路徑'

from captcha_api import request_captcha

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

以上就是python 常見的反爬蟲策略的詳細內容,更多關于python反爬蟲的資料請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

犍为县| 巧家县| 林甸县| 兴化市| 含山县| 措勤县| 平顶山市| 厦门市| 麟游县| 常德市| 新绛县| 来凤县| 宁南县| 琼中| 盘锦市| 北流市| 册亨县| 博湖县| 河东区| 庆安县| 南宫市| 张家港市| 洛宁县| 乐清市| 青岛市| 常山县| 杭锦旗| 宜宾县| 长海县| 宣汉县| 饶阳县| 安宁市| 木里| 甘孜县| 曲沃县| 文昌市| 论坛| 鹤峰县| 闻喜县| 滨州市| 华宁县|