亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Python爬蟲和反爬技術過程的示例分析

發布時間:2021-09-05 13:09:16 來源:億速云 閱讀:160 作者:小新 欄目:開發技術

這篇文章主要介紹了Python爬蟲和反爬技術過程的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

    一、瀏覽器模擬(Headers)

    瀏覽器模擬是最常用的一種反爬方式。設想一下:一個網站不停的被同一個版本的瀏覽器頻率的訪問,那大概了就要被認為是機器人了。所以上有政策下有對策,我們每次訪問都使用不同的瀏覽器版本信息不就可以了嗎。首先我們來看一下如何找到自己瀏覽器信息。

    如何找到瀏覽器信息

    打開瀏覽器,按F12(或者鼠標右鍵+檢查)

    Python爬蟲和反爬技術過程的示例分析

    點擊如下圖所示的Network按鈕

    Python爬蟲和反爬技術過程的示例分析

    按鍵盤Ctrl+R(MAC:Command+R)進行抓包

    操作完上一步之后,隨便點擊右側name中的一項,即可出現下面的頁面,紅框中的內容就是我們要找的瀏覽器信息了。

    Python爬蟲和反爬技術過程的示例分析

    備注:有一些網站會帶有Referer信息,這里的作用主要是在于告訴瀏覽器你是從哪個網址跳轉過來的,類似于P站這種站點就會進行相應的檢查,所以我們可以通過上述同樣的方式找到瀏覽器的Referer信息。如下圖紅框所示:

    Python爬蟲和反爬技術過程的示例分析

    通過上面的步驟,我們就能夠成功的得到瀏覽器的版本信息了,如果能夠獲得不同的版本信息我們就能夠模擬不同的瀏覽器進行操作了。

    在Python中使用user-agent的方式如下:
    headers = {
      			'Referer': '具體的Referer',
                'User-Agent': '具體的user-agent'
        }
    requests.get(url,headers=headers)
    常用的請求頭(模擬瀏覽器)信息如下:
    User_Agent = [
        "Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_2 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5",
        "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5",
        "MQQBrowser/25 (Linux; U; 2.3.3; zh-cn; HTC Desire S Build/GRI40;480*800)",
        "Mozilla/5.0 (Linux; U; Android 2.3.3; zh-cn; HTC_DesireS_S510e Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
        "Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaE75-1 /110.48.125 Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413",
        "Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8J2",
        "Mozilla/5.0 (Windows NT 5.2) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/534.51.22 (KHTML, like Gecko) Version/5.1.1 Safari/534.51.22",
        "Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A5313e Safari/7534.48.3",
        "Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A5313e Safari/7534.48.3",
        "Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A5313e Safari/7534.48.3",
        "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1",
        "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA7)",
        "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; XBLWP7; ZuneWP7)",
        "Mozilla/5.0 (Windows NT 5.2) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30",
        "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0",
        "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)",
        "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)",
        "Mozilla/4.0 (compatible; MSIE 60; Windows NT 5.1; SV1; .NET CLR 2.0.50727)",
        "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)",
        "Opera/9.80 (Windows NT 5.1; U; zh-cn) Presto/2.9.168 Version/11.50",
        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)",
        "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C)",
        "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1",
        "Mozilla/5.0 (Windows; U; Windows NT 5.1; ) AppleWebKit/534.12 (KHTML, like Gecko) Maxthon/3.0 Safari/534.12",
        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; TheWorld)",
        "Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16",
        "Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14",
        "Mozilla/5.0 (Windows NT 6.0; rv:2.0) Gecko/20100101 Firefox/4.0 Opera 12.14",
        "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0) Opera 12.14",
        "Opera/12.80 (Windows NT 5.1; U; en) Presto/2.10.289 Version/12.02",
        "Opera/9.80 (Windows NT 6.1; U; es-ES) Presto/2.9.181 Version/12.00",
        "Opera/9.80 (Windows NT 5.1; U; zh-sg) Presto/2.9.181 Version/12.00",
        "Opera/12.0(Windows NT 5.2;U;en)Presto/22.9.168 Version/12.00",
        "Opera/12.0(Windows NT 5.1;U;en)Presto/22.9.168 Version/12.00",
        "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1",
        "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10; rv:33.0) Gecko/20100101 Firefox/33.0",
        "Mozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/31.0",
        "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20130401 Firefox/31.0",
        "Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0",
        "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20120101 Firefox/29.0",
        "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/29.0",
        "Mozilla/5.0 (X11; OpenBSD amd64; rv:28.0) Gecko/20100101 Firefox/28.0",
        "Mozilla/5.0 (X11; Linux x86_64; rv:28.0) Gecko/20100101  Firefox/28.0",
        "Mozilla/5.0 (Windows NT 6.1; rv:27.3) Gecko/20130101 Firefox/27.3",
        "Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:27.0) Gecko/20121011 Firefox/27.0",
        "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:25.0) Gecko/20100101 Firefox/25.0",
        "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0",
        "Mozilla/5.0 (Windows NT 6.0; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0"
    ]

    二、IP代理

    除了通過同一個瀏覽器進行訪問,還可能出現的情況就是通過同一個IP不斷的訪問網址,這樣很容易造成整個IP被封,個人的IP還好,如果一個公司的IP都不能訪問某個網站,那將會是怎樣的效果就不用多說了吧。

    對于IP來說除了需要控制IP地址的變更之外,還要控制訪問速度,畢竟程序快起來是不眨眼的。

    Python使用IP代理的方式如下:

    import requests
    proxies = {"http": 'IP地址'}
    requests.get(url, headers=headers, proxies=proxies)

    注:關于代理IP去哪找的問題,網上一搜一大把,我們放心大膽的使用就可以了。

    控制訪問頻率使用time模塊即可:

    import time
    time.sleep(5)

    三、Cookies模擬

    有很多時候我們訪問網址會遇到403錯誤,一般這種情況表示無權訪問請求的資源,通常在沒有設置cookie或是沒有設置正確的cookie會導致這個錯誤。cookie的存在就像是一個網址的通行證,你會發現在你登陸和未登陸網頁的時候cookie是會發生變化的。

    手動獲取cookie

    我們可以通過和獲取user-agent一樣的方式來手動獲取cookie:

    Python爬蟲和反爬技術過程的示例分析

    自動獲取cookie

    我們使用session方法就能夠實現自動獲取cookie了

    示例代碼如下:

    import requests
    session = requests.session()
    session.cookies = LWPCookieJar(filename='Cookies.txt')
    def login():
        name = input("輸入賬戶:")
        password = input("輸入密碼:")
        url = "url"
        data = {
            "ck": "",
            "name": name,
            "password": password,
            "remember": "True",
            "ticket": "",
        }
        response = session.post(url, data=data)
        print(response.text)
        session.cookies.save()  # 保存 cookie

    這樣我們的cookie就能夠得以保存了。

    使用session加載cookie的方式如下:

    session.cookies = LWPCookieJar(filename='Cookies.txt')
    session.cookies.load(ignore_discard=True)

    使用cookies

    當我們有了cookies時,使用起來就簡單很多了,直接使用和加載user-agent一樣的方式即可。

    headers = {
      			'Referer': '具體的Referer',
            'User-Agent': '具體的user-agent',
      			'Cookie': 'cookie'
        }
    requests.get(url,headers=headers)

    感謝你能夠認真閱讀完這篇文章,希望小編分享的“Python爬蟲和反爬技術過程的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

    向AI問一下細節

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

    AI

    西昌市| 滦平县| 宁化县| 台湾省| 思南县| 弋阳县| 富川| 辉县市| 资阳市| 萝北县| 永福县| 托克逊县| 文昌市| 曲周县| 六安市| 新乡市| 清远市| 二手房| 武义县| 拜泉县| 营口市| 永吉县| 河东区| 北川| 德令哈市| 凯里市| 洛宁县| 怀远县| 沧州市| 易门县| 梧州市| 启东市| 保定市| 双峰县| 青浦区| 扎囊县| 莱州市| 绿春县| 乌鲁木齐市| 义马市| 梁平县|