當前位置:首頁 » 編程語言 » python爬代理

python爬代理

發布時間: 2022-10-17 22:55:10

❶ 「2022 年」崔慶才 python3 爬蟲教程 - 代理的使用方法

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

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

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

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

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

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

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

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

設置代理後,測試的網址是 http://httpbin.org/get,訪問該鏈接我們可以得到請求的相關信息,其中返回結果的 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:[email protected]: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://github.com/Python3WebSpider/ProxyTest

❷ python爬蟲 如何自己用雲伺服器上搭建代理伺服器 並使用requests測試代理

1、簡介
使用同一個ip頻繁爬取一個網站,久了之後會被該網站的伺服器屏蔽。所以這個時候需要使用代理伺服器。通過ip欺騙的方式去爬取網站

可以使用http://yum.iqianyue.com.com/proxy中找到很多伺服器代理地址

2、應用
# *-*coding:utf-8*-*
from urllib import request
def use_porxy(porxy_addr,url):
porxy = request.ProxyHandler({'http':porxy_addr})
opener = request.build_opener(porxy, request.ProxyHandler)
request.install_opener(opener)
data = request.urlopen(url).read().decode('utf-8')
return data
data = use_porxy("114.115.182.59:128","http://www..com")
print(len(data))

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

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

❹ python爬蟲應該怎樣使用代理IP

先網站上在線提取代理IP,提取數量、代理協議、埠位數等都可以自定義

❺ python中,進行爬蟲抓取怎麼樣能夠使用代理IP

網路數據量越來越大,從網頁中獲取信息變得越來越困難,如何有效地抓取並利用信息,已成為網路爬蟲一個巨大的挑戰。下面IPIDEA為大家講明爬蟲代理IP的使用方法。

1.利用爬蟲腳本每天定時爬取代理網站上的ip,寫入MongoDB或者其他的資料庫中,這張表作為原始表。

2.使用之前需要做一步測試,就是測試這個ip是否有效,方法就是利用curl訪問一個網站查看返回值,需要創建一張新表,循環讀取原始表有效則插入,驗證之後將其從原始表中刪除,驗證的同時能夠利用響應時間來計算這個ip的質量,和最大使用次數,有一個演算法能夠參考一種基於連接代理優化管理的多線程網路爬蟲處理方法。

3.把有效的ip寫入ip代理池的配置文件,重新載入配置文件。

4.讓爬蟲程序去指定的dailiy的服務ip和埠,進行爬取。

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

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

❼ 如何使用Python實現爬蟲代理IP池

第一步:找IP資源

IP資源並不豐富,換句話說是供不應求的,因此一般是使用動態IP。

免費方法,直接在網路上找,在搜索引擎中一搜索特別多能夠提供IP資源的網站,進行採集即可。

付費方法,通過購買芝麻ip上的IP資源,並進行提取,搭建IP池。

❽ 代理IP對於Python爬蟲有多重要

在python爬蟲方面的應該中,需要更換iP的場景是時常的事。而這個時候爬蟲代理ip就派上用場了。他的好處是特別多的。不僅能防止ip被封,並且能減少許多人工方面的工作。節省更多的營銷成本。
在互聯網時代絕大多數的工作都要通過互聯網交易,尤其是一些代理程序問題,更要使用大量的爬蟲編寫或是頻繁地更換ip地址,這些互聯網工作程序所使用到爬蟲代理技術的機會有很多。那麼,爬蟲的代理技術能幫助互聯網工作什麼方面?
爬蟲代理是利用開發商開發的爬蟲軟體替代我們日程工作中不能解決的頻繁更換ip地址問題,比如在網站頻繁多次注冊賬號,在網店開刷各類信譽流量,以及我們在使用到刷機業務都需要使用開發商最新開發的代理爬蟲技術手段更新業務。
爬蟲代理技術是由開發商提供的新技術,在未來將會更多更好的幫助人們進行互聯網工作。更多的幫助人們節約時間解決問題節省成本,這些都是爬蟲的代理技術所能幫到大家的。

❾ python 爬蟲設置代理

熱點內容
直流屏密碼是多少 發布:2024-12-25 00:28:26 瀏覽:655
汽車配置怎麼看馬力 發布:2024-12-25 00:23:49 瀏覽:83
ipad訪問許可權 發布:2024-12-25 00:23:01 瀏覽:690
rxjava上傳 發布:2024-12-25 00:22:59 瀏覽:306
如何用安卓機注銷一個蘋果id 發布:2024-12-25 00:22:57 瀏覽:993
python統計字元個數 發布:2024-12-25 00:22:12 瀏覽:541
我的世界伺服器鞘翅怎麼合成 發布:2024-12-25 00:21:22 瀏覽:799
網頁版360雲伺服器地址 發布:2024-12-25 00:15:59 瀏覽:383
傳奇手游腳本吧 發布:2024-12-25 00:14:00 瀏覽:169
伺服器voc是什麼 發布:2024-12-25 00:12:21 瀏覽:995