最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python做反被爬保護(hù)的方法

 更新時(shí)間:2019年07月01日 15:54:14   作者:(*-*)浩  
在本文里小編給大家整理了一篇關(guān)于python做反被爬保護(hù)的方法的方法,由此需求的同學(xué)參考學(xué)習(xí)下。

網(wǎng)絡(luò)爬蟲,是一個(gè)自動(dòng)提取網(wǎng)頁的程序,它為搜索引擎從萬維網(wǎng)上下載網(wǎng)頁,是搜索引擎的重要組成。但是當(dāng)網(wǎng)絡(luò)爬蟲被濫用后,互聯(lián)網(wǎng)上就出現(xiàn)太多同質(zhì)的東西,原創(chuàng)得不到保護(hù)。于是,很多網(wǎng)站開始反網(wǎng)絡(luò)爬蟲,想方設(shè)法保護(hù)自己的內(nèi)容。

一: User-Agent +Referer檢測

User-Agent 是HTTP協(xié)議的中的一個(gè)字段, 其作用是描述發(fā)出HTTP請求的終端的一些信息。

使得服務(wù)器能夠識(shí)別客戶使用的操作系統(tǒng)及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等。

服務(wù)器通過這個(gè)字段就可以知道訪問網(wǎng)站的是什么人。對于不是正常瀏覽器的用戶進(jìn)行屏蔽。

解決方案:

偽裝瀏覽器的User-Agent,因?yàn)槊總€(gè)瀏覽器的User-Agent不一樣,并且所有的用戶都能使用瀏覽器。所有每次請求的時(shí)候條件瀏覽器的User-Agent,就能解決UA檢測

Referer是header的一部分,當(dāng)瀏覽器向web服務(wù)器發(fā)送請求的時(shí)候,一般會(huì)帶上Referer,告訴服務(wù)器我是從哪個(gè)頁面鏈接過來的。例如有一些圖片網(wǎng)站在你請求圖片的時(shí)候,就會(huì)檢測你的Referer值,如果Referer不符合,不會(huì)返回正常的圖片。

解決方案:

在檢測referer的請求中,攜帶符合的referer值。

二: js混淆和渲染

所謂 JavaScript 混淆,基本就是:

1.去掉一些實(shí)際沒有調(diào)用的函數(shù)。

2.將零散的變量聲明合并。

3.邏輯函數(shù)的精簡。

4.變量名的簡化。具體要看不同的壓縮工具的考慮優(yōu)劣。常見的有UglifyJS、JScrambler等工具。

js渲染其實(shí)就是對HTML頁面的修改。比如有一些網(wǎng)頁本身沒有返回?cái)?shù)據(jù),數(shù)據(jù)是經(jīng)過js加載之后添加到HTML當(dāng)中的。當(dāng)遇到這種情況的時(shí)候,我們要知道爬蟲是不會(huì)執(zhí)行JavaScript操作。所以需要用其他的方法處理。

解決方案:

1.通過閱讀網(wǎng)站js源碼,找到關(guān)鍵的代碼,并用python實(shí)現(xiàn)。

2.通過閱讀網(wǎng)站js源碼,找到關(guān)鍵的代碼,用PyV8,execjs等庫直接執(zhí)行js代碼。

3.通過selenium庫直接模擬瀏覽器環(huán)境

三:IP限制頻次

WEB系統(tǒng)都是走h(yuǎn)ttp協(xié)議跟WEB容器連通的,每次請求至少會(huì)產(chǎn)生一次客戶端與服務(wù)器的tcp連接。

對于服務(wù)端來說可以很清楚的查看到,一個(gè)ip地址在單位時(shí)間內(nèi)發(fā)起的請求。

當(dāng)請求數(shù)超過一定的值之后,就可判斷為非正常的用戶請求。

解決方案:

1.自行設(shè)計(jì)ip代理池,通過輪換的方式,每次請求攜帶不同的代理地址。

2.ADSL動(dòng)態(tài)撥號(hào)他有個(gè)獨(dú)有的特點(diǎn),每撥一次號(hào),就獲取一個(gè)新的IP。也就是它的IP是不固定的。

四:驗(yàn)證碼

驗(yàn)證碼(CAPTCHA)是“Completely Automated PublicTuring test to tell Computers and HumansApart”(全自動(dòng)區(qū)分計(jì)算機(jī)和人類的圖靈測試)的縮寫,是一種區(qū)分用戶是計(jì)算機(jī)還是人的公共全自動(dòng)程序。

可以防止:惡意破解密碼、刷票、論壇灌水,有效防止某個(gè)黑客對某一個(gè)特定注冊用戶用特定程序暴力破解方式進(jìn)行不斷的登陸嘗試。

這個(gè)問題可以由計(jì)算機(jī)生成并評判,但是必須只有人類才能解答。由于計(jì)算機(jī)無法解答CAPTCHA的問題,所以回答出問題的用戶就可以被認(rèn)為是人類。

解決方案:

1.手動(dòng)識(shí)別驗(yàn)證碼

2.pytesseract識(shí)別簡單的驗(yàn)證碼

3.對接打碼平臺(tái)

4.機(jī)器學(xué)習(xí)

擴(kuò)展知識(shí):

基于反爬的相關(guān)實(shí)例代碼:

#! /usr/bin/env python3.4
#-*- coding:utf-8 -*-
#__author__ == "tyomcat"
 
 
import urllib.request
import random
import re
 
url='http://www.whatismyip.com.tw'
iplist=['121.193.143.249:80','112.126.65.193:80','122.96.59.104:82','115.29.98.139:9999','117.131.216.214:80','116.226.243.166:8118','101.81.22.21:8118','122.96.59.107:843']
 
proxy_support = urllib.request.ProxyHandler({'http':random.choice(iplist)})
opener=urllib.request.build_opener(proxy_support)
opener.addheaders=[('User-Agent','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36')]
urllib.request.install_opener(opener)
response = urllib.request.urlopen(url)
html = response.read().decode('utf-8')
 
pattern = re.compile('<h1>(.*?)</h1>.*?<h2>(.*?)</h2>')
iterms=re.findall(pattern,html)
for item in iterms:
  print(item[0]+":"+item[1])
#! /usr/bin/env python
# -*- coding:utf-8 -*-
#__author__ == "tyomcat"
 
from selenium import webdriver
import time
import re
 
drive = webdriver.PhantomJS(executable_path='phantomjs-2.1.1-linux-x86_64/bin/phantomjs')
drive.get('https://mm.taobao.com/self/model_info.htm?user_id=189942305&is_coment=false')
 
time.sleep(5)
 
pattern = re.compile(r'<div.*?mm-p-domain-info">.*?class="mm-p-info-cell clearfix">.*?<li>.*?<label>(.*?)</label><span>(.*?)</span>',re.S)
html=drive.page_source.encode('utf-8','ignore')
items=re.findall(pattern,html)
for item in items:
  print item[0],'http:'+item[1]
drive.close()

相關(guān)文章

  • Python?Selenium無法打開Chrome瀏覽器處理自定義瀏覽器路徑的問題及解決方法

    Python?Selenium無法打開Chrome瀏覽器處理自定義瀏覽器路徑的問題及解決方法

    Python?Selenium控制Chrome瀏覽器的過程中,由于安裝的Chrome瀏覽器的版本找不到對應(yīng)版本的驅(qū)動(dòng)chromedriver.exe文件,下載了小幾個(gè)版本號(hào)的驅(qū)動(dòng)軟件都無法正常使用,下面通過本文介紹Python?Selenium無法打開Chrome瀏覽器處理自定義瀏覽器路徑的問題,需要的朋友可以參考下
    2024-08-08
  • python根據(jù)時(shí)間獲取周數(shù)代碼實(shí)例

    python根據(jù)時(shí)間獲取周數(shù)代碼實(shí)例

    這篇文章主要介紹了python根據(jù)時(shí)間獲取周數(shù),通過周數(shù)獲取時(shí)間代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 使用gunicorn部署django項(xiàng)目的問題

    使用gunicorn部署django項(xiàng)目的問題

    這篇文章主要介紹了使用gunicorn部署django項(xiàng)目,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 解決jupyter不是內(nèi)部或外部命令,也不是可運(yùn)行程序問題

    解決jupyter不是內(nèi)部或外部命令,也不是可運(yùn)行程序問題

    這篇文章主要介紹了解決jupyter不是內(nèi)部或外部命令,也不是可運(yùn)行程序問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 基于Python實(shí)現(xiàn)自動(dòng)用小寫字母替換文件后綴的大寫字母

    基于Python實(shí)現(xiàn)自動(dòng)用小寫字母替換文件后綴的大寫字母

    本文介紹基于Python語言,基于一個(gè)大文件夾,遍歷其中的多個(gè)子文件夾,對于每一個(gè)子文件夾中的大量文件,批量將其文件的名稱或后綴名中的字母由大寫修改為小寫的方法,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2024-04-04
  • Flask中Cookie和Session理解與作用介紹

    Flask中Cookie和Session理解與作用介紹

    Flask是一個(gè)使用 Python 編寫的輕量級 Web 應(yīng)用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎則使用 Jinja2 。Flask使用 BSD 授權(quán)。Flask也被稱為 “microframework” ,因?yàn)樗褂煤唵蔚暮诵?,?nbsp;extension 增加其他功能,F(xiàn)lask中Cookie和Session有什么區(qū)別呢
    2022-10-10
  • python之plt.hist函數(shù)的輸入?yún)?shù)和返回值的用法解釋

    python之plt.hist函數(shù)的輸入?yún)?shù)和返回值的用法解釋

    這篇文章主要介紹了python之plt.hist函數(shù)的輸入?yún)?shù)和返回值的用法解釋,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Python爬蟲框架scrapy實(shí)現(xiàn)的文件下載功能示例

    Python爬蟲框架scrapy實(shí)現(xiàn)的文件下載功能示例

    這篇文章主要介紹了Python爬蟲框架scrapy實(shí)現(xiàn)的文件下載功能,結(jié)合實(shí)例形式分析了scrapy框架進(jìn)行文件下載的具體操作步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-08-08
  • 使用Python腳本生成隨機(jī)IP的簡單方法

    使用Python腳本生成隨機(jī)IP的簡單方法

    這篇文章主要介紹了使用Python腳本生成隨機(jī)IP的簡單方法,并且可以自己設(shè)定IP數(shù)值范圍,需要的朋友可以參考下
    2015-07-07
  • python?flask項(xiàng)目打包成docker鏡像發(fā)布的過程

    python?flask項(xiàng)目打包成docker鏡像發(fā)布的過程

    這篇文章主要介紹了python?flask項(xiàng)目打包成docker鏡像發(fā)布,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03

最新評論

景德镇市| 获嘉县| 荥经县| 绩溪县| 城口县| 黄梅县| 东至县| 舞阳县| 金山区| 运城市| 元阳县| 紫金县| 卓资县| 荔波县| 交城县| 阿拉善盟| 阳新县| 孝义市| 当雄县| 韶山市| 宁化县| 喀什市| 乐清市| 遵化市| 安西县| 崇礼县| 连州市| 乌审旗| 通河县| 迁西县| 梁平县| 会昌县| 新建县| 美姑县| 梁山县| 綦江县| 金湖县| 攀枝花市| 浏阳市| 鱼台县| 乐昌市|