python爬取快代理(Python爬蟲代理)

本文目錄一覽:

python爬取拉勾網,爬了一點就被禁了,老鐵什麼解決辦法嗎?爬蟲小白髮問

拉鉤反爬這塊還是可以的,你這代碼基本沒啥偽裝很容易被檢測為爬蟲,就拿useragent來說,一般都是用一個報頭list來隨機choice,然後每次請求換一次ip用代理池,還有其他模擬用戶的操作發送參數,想做到高效率又不被封,對於新手的話你可以用selenium+phontomjs 簡單粗暴,又好用,唯一缺點效率不行

如何使用python解決網站的反爬蟲

1、從用戶請求的Headers反爬蟲是最常見的反爬蟲策略。

偽裝header。很多網站都會對Headers的User-Agent進行檢測,還有一部分網站會對Referer進行檢測(一些資源網站的防盜鏈就是檢測Referer)。如果遇到了這類反爬蟲機制,可以直接在爬蟲中添加Headers,將瀏覽器的User-Agent複製到爬蟲的Headers中;或者將Referer值修改為目標網站域名[評論:往往容易被忽略,通過對請求的抓包分析,確定referer,在程序中模擬訪問請求頭中添加]。對於檢測Headers的反爬蟲,在爬蟲中修改或者添加Headers就能很好的繞過。

2、基於用戶行為反爬蟲

還有一部分網站是通過檢測用戶行為,例如同一IP短時間內多次訪問同一頁面,或者同一賬戶短時間內多次進行相同操作。[這種防爬,需要有足夠多的ip來應對]

(1)、大多數網站都是前一種情況,對於這種情況,使用IP代理就可以解決。可以專門寫一個爬蟲,爬取網上公開的代理ip,檢測後全部保存起來。有了大量代理ip後可以每請求幾次更換一個ip,這在requests或者urllib中很容易做到,這樣就能很容易的繞過第一種反爬蟲。

編寫爬蟲代理:

步驟:

1.參數是一個字典{‘類型’:’代理ip:埠號’}

proxy_support=urllib.request.ProxyHandler({})

2.定製、創建一個opener

opener=urllib.request.build_opener(proxy_support)

3a.安裝opener

urllib.request.install_opener(opener)

3b.調用opener

opener.open(url)

用大量代理隨機請求目標網站,應對反爬蟲

python爬蟲怎麼設置HTTP代理伺服器

解決的方法很簡單,就是使用代理伺服器。

使用代理伺服器去爬取某個網站的內容的時候,在對方的網站上,顯示的不是我們真實的IP地址,而是代理伺服器的IP地址。並且在Python爬蟲中,使用代理伺服器設置起來也很簡單。

python爬蟲怎麼抓取代理伺服器

如果你下面那個可以使用個,你就都加上代理就是了,應該是有的網站限制了爬蟲的頭部數據。 雖然你可以通過urlopen返回的數據判斷,但是不建議做,增加成本。 如果解決了您的問題請採納! 如果未解決請繼續追問

「2022 年」崔慶才 Python3 爬蟲教程 – 代理的使用方法

前面我們介紹了多種請求庫,如 urllib、requests、Selenium、Playwright 等用法,但是沒有統一梳理代理的設置方法,本節我們來針對這些庫來梳理下代理的設置方法。

在本節開始之前,請先根據上一節了解一下代理的基本原理,了解了基本原理之後我們可以更好地理解和學習本節的內容。

另外我們需要先獲取一個可用代理,代理就是 IP 地址和埠的組合,就是 : 這樣的格式。如果代理需要訪問認證,那就還需要額外的用戶名密碼兩個信息。

那怎麼獲取一個可用代理呢?

使用搜索引擎搜索 「代理」 關鍵字,可以看到許多代理服務網站,網站上會有很多免費或付費代理,比如快代理的免費 HTTP 代理: 上面就寫了很多免費代理,但是這些免費代理大多數情況下並不一定穩定,所以比較靠譜的方法是購買付費代理。付費代理的各大代理商家都有套餐,數量不用多,穩定可用即可,我們可以自行選購。

另外除了購買付費 HTTP 代理,我們也可以在本機配置一些代理軟體,具體的配置方法可以參考 ,軟體運行之後會在本機創建 HTTP 或 SOCKS 代理服務,所以代理地址一般都是 127.0.0.1: 這樣的格式,不同的軟體用的埠可能不同。

這裡我的本機安裝了一部代理軟體,它會在本地 7890 埠上創建 HTTP 代理服務,即代理為 127.0.0.1:7890。另外,該軟體還會在 7891 埠上創建 SOCKS 代理服務,即代理為 127.0.0.1:7891,所以只要設置了這個代理,就可以成功將本機 IP 切換到代理軟體連接的伺服器的 IP 了。

在本章下面的示例里,我使用上述代理來演示其設置方法,你也可以自行替換成自己的可用代理。

設置代理後,測試的網址是 ,訪問該鏈接我們可以得到請求的相關信息,其中返回結果的 origin 欄位就是客戶端的 IP,我們可以根據它來判斷代理是否設置成功,即是否成功偽裝了 IP。

好,接下來我們就來看下各個請求庫的代理設置方法吧。

首先我們以最基礎的 urllib 為例,來看一下代理的設置方法,代碼如下:

運行結果如下:

這裡我們需要藉助 ProxyHandler 設置代理,參數是字典類型,鍵名為協議類型,鍵值是代理。注意,此處代理前面需要加上協議,即 http:// 或者 https://,當請求的鏈接是 HTTP 協議的時候,會使用 http 鍵名對應的代理,當請求的鏈接是 HTTPS 協議的時候,會使用 https 鍵名對應的代理。不過這裡我們把代理本身設置為了 HTTP 協議,即前綴統一設置為了 http://,所以不論訪問 HTTP 還是 HTTPS 協議的鏈接,都會使用我們配置的 HTTP 協議的代理進行請求。

創建完 ProxyHandler 對象之後,我們需要利用 build_opener 方法傳入該對象來創建一個 Opener,這樣就相當於此 Opener 已經設置好代理了。接下來直接調用 Opener 對象的 open 方法,即可訪問我們所想要的鏈接。

運行輸出結果是一個 JSON,它有一個欄位 origin,標明了客戶端的 IP。驗證一下,此處的 IP 確實為代理的 IP,並不是真實的 IP。這樣我們就成功設置好代理,並可以隱藏真實 IP 了。

如果遇到需要認證的代理,我們可以用如下的方法設置:

這裡改變的只是 proxy 變數,只需要在代理前面加入代理認證的用戶名密碼即可,其中 username 就是用戶名,password 為密碼,例如 username 為 foo,密碼為 bar,那麼代理就是 foo:bar@127.0.0.1:7890。

如果代理是 SOCKS5 類型,那麼可以用如下方式設置代理:

此處需要一個 socks 模塊,可以通過如下命令安裝:

這裡需要本地運行一個 SOCKS5 代理,運行在 7891 埠,運行成功之後和上文 HTTP 代理輸出結果是一樣的:

結果的 origin 欄位同樣為代理的 IP,代理設置成功。

對於 requests 來說,代理設置非常簡單,我們只需要傳入 proxies 參數即可。

這裡以我本機的代理為例,來看下 requests 的 HTTP 代理設置,代碼如下:

運行結果如下:

和 urllib 一樣,當請求的鏈接是 HTTP 協議的時候,會使用 http 鍵名對應的代理,當請求的鏈接是 HTTPS 協議的時候,會使用 https 鍵名對應的代理,不過這裡統一使用了 HTTP 協議的代理。

運行結果中的 origin 若是代理伺服器的 IP,則證明代理已經設置成功。

如果代理需要認證,那麼在代理的前面加上用戶名和密碼即可,代理的寫法就變成如下所示:

這裡只需要將 username 和 password 替換即可。

如果需要使用 SOCKS 代理,則可以使用如下方式來設置:

這裡我們需要額外安裝一個包 requests[socks],相關命令如下所示:

運行結果是完全相同的:

另外,還有一種設置方式,即使用 socks 模塊,也需要像上文一樣安裝 socks 庫。這種設置方法如下所示:

使用這種方法也可以設置 SOCKS 代理,運行結果完全相同。相比第一種方法,此方法是全局設置的。我們可以在不同情況下選用不同的方法。

httpx 的用法本身就與 requests 的使用非常相似,所以其也是通過 proxies 參數來設置代理的,不過與 requests 不同的是,proxies 參數的鍵名不能再是 http 或 https,而需要更改為 http:// 或 https://,其他的設置是一樣的。

對於 HTTP 代理來說,設置方法如下:

對於需要認證的代理,也是改下 proxy 的值即可:

這裡只需要將 username 和 password 替換即可。

運行結果和使用 requests 是類似的,結果如下:

對於 SOCKS 代理,我們需要安裝 httpx-socks 庫,安裝方法如下:

這樣會同時安裝同步和非同步兩種模式的支持。

對於同步模式,設置方法如下:

對於非同步模式,設置方法如下:

和同步模式不同的是,transport 對象我們用的是 AsyncProxyTransport 而不是 SyncProxyTransport,同時需要將 Client 對象更改為 AsyncClient 對象,其他的不變,運行結果是一樣的。

Selenium 同樣可以設置代理,這裡以 Chrome 為例來介紹其設置方法。

對於無認證的代理,設置方法如下:

運行結果如下:

代理設置成功,origin 同樣為代理 IP 的地址。

如果代理是認證代理,則設置方法相對比較繁瑣,具體如下所示:

這裡需要在本地創建一個 manifest.json 配置文件和 background.js 腳本來設置認證代理。運行代碼之後,本地會生成一個 proxy_auth_plugin.zip 文件來保存當前配置。

運行結果和上例一致,origin 同樣為代理 IP。

SOCKS 代理的設置也比較簡單,把對應的協議修改為 socks5 即可,如無密碼認證的代理設置方法為:

運行結果是一樣的。

對於 aiohttp 來說,我們可以通過 proxy 參數直接設置。HTTP 代理設置如下:

如果代理有用戶名和密碼,像 requests 一樣,把 proxy 修改為如下內容:

這裡只需要將 username 和 password 替換即可。

對於 SOCKS 代理,我們需要安裝一個支持庫 aiohttp-socks,其安裝命令如下:

我們可以藉助於這個庫的 ProxyConnector 來設置 SOCKS 代理,其代碼如下:

運行結果是一樣的。

另外,這個庫還支持設置 SOCKS4、HTTP 代理以及對應的代理認證,可以參考其官方介紹。

對於 Pyppeteer 來說,由於其默認使用的是類似 Chrome 的 Chromium 瀏覽器,因此其設置方法和 Selenium 的 Chrome 一樣,如 HTTP 無認證代理設置方法都是通過 args 來設置的,實現如下:

運行結果如下:

同樣可以看到設置成功。

SOCKS 代理也一樣,只需要將協議修改為 socks5 即可,代碼實現如下:

運行結果也是一樣的。

相對 Selenium 和 Pyppeteer 來說,Playwright 的代理設置更加方便,其預留了一個 proxy 參數,可以在啟動 Playwright 的時候設置。

對於 HTTP 代理來說,可以這樣設置:

在調用 launch 方法的時候,我們可以傳一個 proxy 參數,是一個字典。字典有一個必填的欄位叫做 server,這裡我們可以直接填寫 HTTP 代理的地址即可。

運行結果如下:

對於 SOCKS 代理,設置方法也是完全一樣的,我們只需要把 server 欄位的值換成 SOCKS 代理的地址即可:

運行結果和剛才也是完全一樣的。

對於有用戶名和密碼的代理,Playwright 的設置也非常簡單,我們只需要在 proxy 參數額外設置 username 和 password 欄位即可,假如用戶名和密碼分別是 foo 和 bar,則設置方法如下:

這樣我們就能非常方便地為 Playwright 實現認證代理的設置。

以上我們就總結了各個請求庫的代理使用方式,各種庫的設置方法大同小異,學會了這些方法之後,以後如果遇到封 IP 的問題,我們可以輕鬆通過加代理的方式來解決。

本節代碼:

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/200615.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-05 20:02
下一篇 2024-12-05 20:02

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29

發表回復

登錄後才能評論