爬蟲筆記(十二)——瀏覽器偽裝技術

為什么要進行瀏覽器偽裝技術?

? 有一些網站為了避免爬蟲的惡意訪問,會設置一些反爬蟲機制,對方服務器會對爬蟲進行屏蔽。常見的飯爬蟲機制主要有下面幾個:

1.? 通過分析用戶請求的Headers信息進行反爬蟲

2.? 通過檢測用戶行為進行反爬蟲,比如通過判斷同一個IP在短時間內是否頻繁訪問對應網站等進行分析

3.? 通過動態頁面增加爬蟲的爬取難度,達到反爬蟲的目的

??? 第一種反爬蟲機制在目前網站中應用的最多,大部分反爬蟲網站會對用戶請求的Headers信息的“User-Agent”字段進行檢測來判斷身份,有時,這類反爬蟲的網站還會對“Referer”字段進行檢測。我們可以在爬蟲中構造這些用戶請求的Headers信息,以此將爬蟲偽裝成瀏覽器,簡單的偽裝只需設置好“User-Agent”字段的信息即可,如果要進行高相似度的路藍旗偽裝,則需要將用戶請求的Headers信息中常見的字段都在爬蟲中設置好
?第二種反爬蟲機制的網站,可以通過之前學習的使用代理服務器并經常切換代理服務器的方式,一般就能夠攻克限制
?第三種反爬蟲機制的網站,可以利用一些工具軟件,比如selenium+phantomJS,就可以攻克限制

瀏覽器偽裝準備工作

? 在學習高相似度的瀏覽器偽裝技術之前,我們首先要對Headers信息要有一定的了解。我們先打開火狐瀏覽器,打開淘寶的網站www.taobao.com,利用Fiddler獲取頭部信息。

字段的格式,基本格式為:“字段名”:”字段值”,字段名和對應的值之間通過”:”隔開。

字段1: Accept: text/html, application/xhtml+xml, application/xmlq=0.9,*/*;q=08

  • Accept字段主要用來表示瀏覽器能夠支持的內容類型有哪些。
  • text html表示HTML文檔。
  • application/ xhtml+xml表示XHTML文檔。
  • q代表權重系數,值介于0和1之間。

這一行字段信息表示瀏覽器可以支持 text/html,application/xml、/等內容類型,支持的優先順序從左到右依次排列。

字段2: accept-encoding:gzip, deflate

  • accept-encoding字段主要用來表示瀏覽器支持的壓縮編碼有哪些。
  • gzip是壓縮編碼的一種。
  • deflate是一種無損數據壓縮算法

這一行字段信息表示瀏覽器可以支持gzp、 deflate等壓縮編碼。

字段3: Accept- Language:en-US,en;q=0.5

  • Accept-language主要用來表示瀏覽器所支持的語言類型。
  • en-Us表示英語(美國)語言
  • en表示英語語言

所以之一行字段表示瀏覽器可以支持en-US、cn等語言。除此之外,有些還支持zh-CN(表示簡體中文語言。zh表示中文,CN表示簡體)。

字段4:User- Agent: Mozilla/5.0( X11;Ubuntu;Linux x86_64 ;rv:61.0) Gecko20100101Firefox/61.0

  • user-agent字段主要表示用戶代理,服務器可以通過該字段識別出客戶端的瀏覽器類客戶端的操作系統及版本號型、瀏覽器版本號主要以偽造該字段進行網頁排版引擎等客戶端信息。所以之前要模擬瀏覽器登錄,主要以偽造該字段進行。
  • Mozilla/5.0表示瀏覽器名和版本號。
  • X11;Ubuntu;Linux x86_64 ;rv:61.0表示客戶端操作系統對應信息。
  • Gecko表示網頁排版引擎對應信息。
  • Firefox/61.0表示火狐瀏覽器。

所以這一行字段表示信息為對應的用戶代理信息。

字段5: Connection:keep-alve

  • Connection表示客戶端與服務器的連接類型,對應的字段值主要有兩種。
  • keep-alive表示持久性連接。
  • close表示單方面關閉連接,讓連接斷開。

所以此時,這一行字段表示客戶端與服務器的連接是持久性連接。

?

字段6:Host: ocsp2.globalsign.com

  • Host字段表示請求的服務器網址是什么,此時這一行字段表示請求的服務器網址是ocsp2.globalsign.com。

字段7: Referer:網址

  • Referer字段主要表示來源網址地址,比如我們從htp:/ www,youku.conm網址中訪問了該網址下的子頁http/tvyouku.com?spm=0.0.topnav.5-1-3!2-A.Onqoef,那么此時來源網址為htp:/ www,youku,con,即此時 Referer字段的值為http:/ww
    youku. com

python代碼實戰

使用代理服務器

import urllib.request
import urllib.parse
import http.cookiejar
url = "http://bbs.chinaunix.net/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LfgTz"
postdata = urllib.parse.urlencode({  #  此處登錄可用自己在網站上注冊的用戶名和密碼"username": "weisuen","password": "aA123456"
}).encode("utf-8")
req = urllib.request.Request(url, postdata)
req.add_header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36")# 使用http.cookiejar.CookieJar()創建CookieJar對象
cjar = http.cookiejar.CookieJar()# 使用HTTPCookieProcessor創建cookie處理器,并以其參數構建opener對象
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cjar))
# 將opener安裝為全局urllib.request.install_opener(opener)
file = opener.open(req)
data = file.read()
file = open('/home/wk/csdn.html','wb')
file.write(data)
file.close()url2 = "http://bbs.chinaunix.net/"  # 設置要爬取的該網站下其他網頁地址
data2 = urllib.request.urlopen(url2).read()
fhandle = open('/home/wk/csdn1.html','wb')
fhandle.write(data2)
fhandle.close()

?

?

?

?

?

?

?

?

轉載于:https://www.cnblogs.com/longwhite/p/10397756.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/390056.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/390056.shtml
英文地址,請注明出處:http://en.pswp.cn/news/390056.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

650. 只有兩個鍵的鍵盤

650. 只有兩個鍵的鍵盤 最初記事本上只有一個字符 ‘A’ 。你每次可以對這個記事本進行兩種操作: Copy All(復制全部):復制這個記事本中的所有字符(不允許僅復制部分字符)。Paste(粘貼&#x…

Codeforces 626F Group Projects (DP)

題目鏈接 8VC Venture Cup 2016 - Elimination Round 題意 把$n$個物品分成若干組,每個組的代價為組內價值的極差,求所有組的代價之和不超過$k$的方案數。 考慮DP,$f[i][j][k]$表示考慮到第$i$個物品的時候,還有$j$組尚未分配完…

《活出生命的意義》:人生有何意義?

在你一生的閱讀體驗中,如果能夠有一本書,它的某個章節、某種思想、或者某句話能夠觸動你的內心,解決你的困惑,甚至能改變你的命運,那這樣的一本書你一定要視如珍寶,經常翻閱,維克多弗蘭克爾的《…

右鍵添加git-bash

主要: 右鍵如果沒有git-bash,如何給右鍵手動添加 前面對右鍵存在git-bash但使用出現問題的解決,也想到如果右鍵都沒有,該如何給右鍵添加了,于是接著記錄下如何添加的過程: 情形: 手動給右鍵添加…

Weblogic的緩存

2019獨角獸企業重金招聘Python工程師標準>>> 最近遇到一個關于weblogic緩存的問題。再把war包放入到weblogic指定目錄啟動以后,訪問頁面信息沒有更新。最后發現是\weblogic\user_projects\domains\base_domain\servers\AdminServer下的文件沒有清除&…

725. 分隔鏈表

725. 分隔鏈表 給你一個頭結點為 head 的單鏈表和一個整數 k ,請你設計一個算法將鏈表分隔為 k 個連續的部分。 每部分的長度應該盡可能的相等:任意兩部分的長度差距不能超過 1 。這可能會導致有些部分為 null 。 這 k 個部分應該按照在鏈表中出現的順…

LAMP介紹-MySQL安裝

2019獨角獸企業重金招聘Python工程師標準>>> LAMP: linux-apache-mysql-php (安裝方式有:rpm,源碼,二進制免編譯) linux-操作系統 apache-web服務軟件(httpd) mysql-存儲數據庫 php…

總結verilog產生隨機數的$random和seed

$random(seed)是verilog中最簡單的產生隨機數的系統函數。 在調用系統函數$random(seed)時,可以寫成三種樣式:1)$random,2)$random(),3)$random(seed)。下面分別說明: 1)…

326. 3的冪

326. 3的冪 給定一個整數,寫一個函數來判斷它是否是 3 的冪次方。如果是,返回 true ;否則,返回 false 。 整數 n 是 3 的冪次方需滿足:存在整數 x 使得 n 3x 示例 1:輸入:n 27 輸出&#x…

Lottie 站在巨人的肩膀上實現 Android 酷炫動畫效果

說到動畫效果,一般都會感到很高端,感覺很酷炫;而小菜技術有限,稍復雜的動畫效果也需要很多時間處理,但是遇到時間緊任務重的情況該怎么辦呢?那就嘗試一下 Lottie 吧,酷炫的動畫集成卻相當簡單&a…

正則表達式(讀書過程所記未整理)

\d 表示一位數字字符 \d{3} 表示3個數字字符 匹配電話比如400-400-1118 import re phone_number re.compile(r\d{3}-\d{3}-\d{4}) mo phone_number.search(rfor a number is 400-400-4000) print(mo.group()) ************************************************************…

java1

不知道為啥粘貼的圖片是一堆編碼。。。。 如何插入圖片 博客后后臺MarkDown編輯器上只有一個按鈕,就是用來上傳圖片并自動插入MarkDown標記的,超級好用 (一)學習總結 1.在java中通過Scanner類完成控制臺的輸入,查閱JDK…

430. 扁平化多級雙向鏈表

430. 扁平化多級雙向鏈表 多級雙向鏈表中,除了指向下一個節點和前一個節點指針之外,它還有一個子鏈表指針,可能指向單獨的雙向鏈表。這些子列表也可能會有一個或多個自己的子項,依此類推,生成多級數據結構&#xff0c…

PHPstudy搭建本地環境的網頁加載速度慢的解決方案

PHP5.3以上,如果數據庫鏈接地址是localhost,會自動檢測最終的地址是IPV4還是IPV6,所以會比較慢。解決辦法:修改數據庫的鏈接地址,將localhost改為127.0.0.1即可。 原文鏈接:https://chasjd.com/posts/fb433…

標記偏見_分析師的偏見

標記偏見“Beware of the HiPPO in the room” — The risks and dangers of top-down, intuition-based decision making are well known in the business world. Experimentation and data-based decision making become widely acknowledged as the right way to steer a bu…

scott登錄查詢常用語句

一、簡單查詢 1.簡單查詢select * from emp;--查詢表emp中的所有數據select empno as id,ename as name from emp;--查詢表emp中的empno顯示為id,ename顯示為name 2.去除重復select distinct job from emp;--將表emp中的job去重select distinct job,deptno from emp…

CSS結構的基礎認知

css的屬性值與html的屬性值用法不相上下&#xff0c;但是css主要分為內聯樣式表和外聯樣式表。 內聯樣式表用法&#xff1a;在html文件中的《head》頭文件中添加<style></style>標簽&#xff0c;在標簽內添加所需的屬性值&#xff0c;例如&#xff1a;<!DOCTYPE…

BZOJ1453: [Wc]Dface雙面棋盤

Time Limit: 10 Sec Memory Limit: 64 MB Submit: 784 Solved: 422 [Submit][Status][Discuss] Description 佳佳有一個 nnn 行 nnn 列的黑白棋盤&#xff0c;每個格子都有兩面&#xff0c;一面白色&#xff0c;一面黑色。佳佳把棋盤平放在桌子上&#xff0c;因此每個格子恰好一…

用戶體驗數據分析 書單_如何使用數據改善用戶體驗設計

用戶體驗數據分析 書單In the current age of technology, if an entrepreneur comes up with a grand idea, chances are they’ll need a pretty sweet website to go along with it. And if they want their idea to really sell, they will also need a website that reall…

推薦11個實用的JavaScript庫

2019獨角獸企業重金招聘Python工程師標準>>> JavaScript 仍然是 2018 年最受歡迎和使用最為廣泛的編程語言&#xff0c;因此 JavaScript 生態系統也會繼續發展壯大。 然而&#xff0c;JavaScript 的標準庫仍然繼續保持“短小精悍”的身材。為了填補標準庫功能方面的…