python爬蟲反爬 css 知乎 專欄_反反爬蟲系列(四)

過完年,好了,咱們接著更新反反爬蟲系列

至于之前有朋友表示出一下1688呀,x寶的反反爬蟲

說實在的,阿里系的反爬蟲很厲害,我自愧不能搞定。

比如x寶的登錄,用了selenium + chrome的朋友都會遇到滑條拖動驗證失敗的情況

這個就是過不了的,首先會去檢查你的瀏覽器DOM的window.webdriver 來判斷是否是人還是自動化工具

其次還會檢測瀏覽器指紋看你的特征值,然后就是邏輯回歸的算法來判斷是不是爬蟲。

暫時先提這么多

依舊是回顧之前的系列:不吃夾生飯:反反爬蟲系列(一)?zhuanlan.zhihu.com90220e75c989f2a91904c5540f83987e.png不吃夾生飯:反反爬蟲系列(二)?zhuanlan.zhihu.com94f2eeb18755cfa764fa090287fd7e3d.png不吃夾生飯:反反爬蟲系列(三)?zhuanlan.zhihu.comd4b4d51c441a6ba37d1d91e868e1dc15.png

好了,今天我們要研究的是 x車之家的字體反爬蟲

難度: 中等偏上

反爬策略: html頁面通過css替換,::before這個東東,拿到的html是源碼,前端渲染出來的才是所見的。因此在一些關鍵部分字體拿到的是一個code,起到迷惑的意義。

我舉個栗子吧: 小明有頭驢。

那到底是幾頭呢,這個反爬蟲的意義就在這。

反反爬策略:解析出每個code對于的字就ok了

好了,入正題。

需求就定在我們需要去拿汽車的參數配置信息

進入頁面,長醬色的

頁面上看著沒問題對吧

然后看html源碼

并沒有結構化的東西,同時發現數據放在js里,長醬色的

注意我標的紅框里的東西

所以啊,就算突破一些常規的反爬蟲手段,拿到html后,我指的是批量拿到所有車型的配置html后。

解析了js,拿到配置信息。

但是關鍵地方的字體被替換,那搞個毛啊。

所以,接下來我們需要把這個替換再換回來。

因為常規的反爬蟲都是前端反爬蟲,等于讀書時候的習題冊,答案就在習題冊后面。

這時候我就又回到html里去找答案,

這僅僅是 二十多行,就看到這段,看里面覺得有貓膩對吧,

我們把這段js拿出來,格式化一下,就長這樣的

接下來就是耐心的找貓膩咯

完了后發現這樣一段函數

index和item有點刺眼,根據職業習慣,這個應該就是對于的字體

咱們再去搜搜 InsertRule這個關鍵詞,然后找到這個

添加一句 console.log($index$, $temp$)

然后把整段js拿到chrome里,執行一下看看

這不就出來了么

然后從解析出來的數據里,按照index替換就行了。

大體上的思路就是這樣

代碼我就不提供了,偷個懶

這里筆者需要提醒的就是:

x車之家,加載的字體是動態的,同時針對具體的車系加載的字體又是固定的。

因此在采集的時候要注意不同車系加載的不同字體

最后,個人感覺,在字體反爬蟲上,x車之家算是教科書級別的。

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

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

相關文章

javaweb中mysql數據庫的回滾操作代碼

2019獨角獸企業重金招聘Python工程師標準>>> 在mysql中創建用戶賬戶數據庫(注意,count不能為負數,要設置無符號型) 添加數據 下面我們得到connection對象開始進行事務提交和回滾的操作 package com.lyb.test; import s…

ruby array_Ruby中帶有示例的Array.shuffle方法

ruby arrayArray.shuffle方法 (Array.shuffle Method) In this article, we will study about Array.shuffle method. You all must be thinking the method must be doing something which is related to shuffling of elements or objects in the Array instance. It is not …

【147天】尚學堂高淇Java300集視頻精華筆記(108-109)

第108集:容器equals和hashcodeJDK源代碼分析 本集知識點 Java中規定,若兩個對象equals比較后內容相等(為true),則hashCode必須相等,反之不然。【原因見內存分析圖】hashCode與equals方法必須同時重寫,且必須…

ruby hash方法_Ruby中帶有示例的Hash.key?(obj)方法

ruby hash方法Hash.key?(obj)方法 (Hash.key?(obj) Method) In this article, we will study about Hash.key?(obj) Method. The working of the method cant be assumed because of its quite a different name. Let us read its definition and understand its …

python迭代器與生成器答案_史上最全 Python 迭代器與生成器

原標題:史上最全 Python 迭代器與生成器作者:浪子燕青鏈接:http://www.langzi.fun/迭代器與生成器.html迭代器與可迭代對象概念迭代器:是訪問數據集合內元素的一種方式,一般用來遍歷數據,但是他不能像列表一…

[性能測試] LoadRunner結果分析 – TPS

本文轉載自:http://www.tuicool.com/articles/6z6vuy針對吞吐率和 TPS 的關系,這個在結果分析中如何使用,就個人經驗和朋友討論后,提出如下建議指導,歡迎同僚指正。相關定義響應時間 網絡響應時間 應用程序響應時間響…

密碼學電子書_密碼學中的電子密碼書(ECB)

密碼學電子書This Electronic Code Book (ECB) is cryptography as a mode of operation for a block cipher, with the characters the main things that every feasible block of plaintext or an original text has a corresponding characteristic of ciphertext value and…

tsql是mysql中的嗎_Mysql中的sql是如何執行的

MySQL中的SQL是如何執行的MySQL是典型的C/S架構,也就是Client/Server架構,服務器端程序使用的mysqld.整體的MySQL流程如下圖所示:MySQL是有三層組成:連接層: 負責客戶端與服務器端建立連接,客戶端發送SQL至服務端;SQL層: 對SQL語句進行查詢處理;存儲引擎層: 與數據庫文件打交道…

軟件質量特性測試

針對軟件質量特性進行測試,可以避免重大漏測,一般人我不告訴他。《軟件工程—產品質量》(GB/T 16260-2006)中規定對軟件的每個質量特性與子特性都有定義:一、功能性:是指當軟件在指定條件下使用&#xff0c…

PHP array_pop()函數與示例

PHP array_pop()函數 (PHP array_pop() function) array_pop() function is used to delete/pop last element from the array. array_pop()函數用于從數組中刪除/彈出最后一個元素。 Syntax: 句法: array_pop(array);Here, array is the input array, function w…

網站關停就沒事了?5100萬賬戶文件被盜

曾經是美國三大音樂視頻文件共享軟件之一的imesh,意外倒閉。而更意外的是,就在近日,imesh這款已經倒閉的軟件,5100萬賬戶開始在暗網被黑客拍賣。 Imesh這款軟件是美國紐約的老牌音樂視頻分享軟件之一,早在2000年前便已…

數據庫表設計索引外鍵設計_關于索引的設計決策 數據庫管理系統

數據庫表設計索引外鍵設計Introduction: 介紹: The attributes whose values are required inequality or range conditions and those that are keys or that participate in join conditions require access paths. 其值為必需的不等式或范圍條件的屬性以及作為鍵…

接口測試從零開始系列_mock技術使用

1、什么情況下會使用mock技術 (1)需要將當前被測單元和其依賴模塊獨立開來,構造一個獨立的測試環境,不關注被測單元的依賴對象,只關注被測單元的功能邏輯 ----------比如被測代碼中需要依賴第三方接口返回值進行邏輯處…

amie 規則挖掘_AMIE的完整形式是什么?

amie 規則挖掘AMIE:工程師協會的準會員 (AMIE: Associate Member of the Institution of Engineers) AMIE is an abbreviation of Associate Member of the Institution of Engineers. The Institution of Engineers India Limited (IEIL) provides this profession…

java 馬克思_單鏈表-Java

public class SinglyListNode {int val;SinglyListNode next;SinglyListNode() {}SinglyListNode(int x) {this.val x;}}/*執行用時:12 ms, 在所有 Java 提交中擊敗了66.93%的用戶內存消耗:39.5 MB, 在所有 Java 提交中擊敗了5.06%的用戶*/class MyLink…

python的pass語句_Python | 演示pass語句的示例

python的pass語句python中的pass語句 (pass statement in python) "pass" is a type of null operation or null statement, when it executes nothing happens. It is used when you want do not want to write any code/statement to execute but syntactically a …

HDS:聚焦未來的投資“凍結”

一家日本IT網站報道的有關HDS凍結對高端存儲產品的投資一事引發眾議。讓人陷入疑惑的這次聲明就是,HDS認為單純的陣列產品并非企業存儲的未來。 6月1日,IT Pro Nikkei網站發布了一篇報道,內容援引HDS一份表示將凍結高端存儲業務的簡報。這引發…

java js對象轉字符串數組_JS數組轉字符串(3種方法)【轉】

JavaScript 允許數組與字符串之間相互轉換。其中 Array 方法對象定義了 3 個方法,可以把數組轉換為字符串,如表所示。數組方法說明toString()將數組轉換成一個字符串toLocalString()把數組轉換成本地約定的字符串join()將數組元素連接起來以構建一個字符…

中美共建大數據創新研究中心

由貴陽市人民政府、工信部電子一所、美國加州大學伯克利分校合作共建的貴州伯克利大數據創新研究中心日前在貴陽揭牌。 據了解,貴州伯克利大數據創新研究中心將分兩階段建設。第一階段,2016年9月份至2017年底,將重點完成“學齡兒童大數據分析…

Python中的__init__和self是做什么的?

The __init__ and self are two keywords in python, which performs a vital role in the application. __init__和self是python中的兩個關鍵字,在應用程序中起著至關重要的作用。 To begin with, it is important to understand the concept of class and object…