本文目錄一覽:
- 1、python 如何編寫代理服務器
- 2、如何使用服務器代理 python使用代理服務器
- 3、python 怎樣設置代理訪問http請求
- 4、如何在python配置動態轉發代理?
- 5、「2022 年」崔慶才 Python3 爬蟲教程 – 代理的使用方法
python 如何編寫代理服務器
from bottle import run,route,request,response
from urllib.request import urlopen
@route(‘url:re:.*’)
def get_method(url):
data=urlopen(url)
return data.read()
run(host=’0.0.0.0′,port=3456,debug=True)
我簡單寫一個,使用bottle框架,注意不要該ie的代理,使用別的瀏覽器如firefox代理到
127.0.0.1:3456
如何使用服務器代理 python使用代理服務器
小鳥雲服務器niaoyun實例創建好之後,您可以使用以下任意一種方式登錄服務器:
遠程桌面連接(MicrosoftTerminalServicesClient,MSTSC):採用這種方式登錄,請確保實例能訪問公網。如果在創建實例時沒有購買帶寬,則不能使用遠程桌面連接。
管理終端VNC:無論您在創建實例時是否購買了帶寬,只要您本地有網頁瀏覽器,都可以通過管理控制台的管理終端登錄實例。
使用遠程桌面連接(MSTSC)登錄實例
打開開始菜單遠程桌面連接,或在開始菜單搜索中輸入mstsc。也可以使用快捷鍵Win+R來啟動運行窗口,輸入mstsc後回車啟動遠程桌面連接。
在遠程桌面連接對話框中,輸入實例的公網IP地址。單擊顯示選項。
輸入用戶名,如小鳥雲默認為niaoyun。單擊允許我保存憑據,然後單擊連接。這樣以後登錄就不需要手動輸入密碼了。
python 怎樣設置代理訪問http請求
有幾種方法。一種是設置環境變量http_proxy,它會自動訪問這個。 另外一種是你使用urllib2的時候,在參數里加上代理。還有一個是urllib上指定。
比如
import urllib
urllib.urlopen(某網站,proxyes={‘http:’:”某代理IP地址:代理的端口”})
使用QT時,它的瀏覽器設置代理要在瀏覽器初始化參數里指定。
如何在python配置動態轉發代理?
你好,首先你需要一個middlewares.py,如下:
import random
# 導入settings文件中的UAPOOL
from settings import UAPOOL
# 導入官方文檔對應的HttpProxyMiddleware
from scrapy.contrib.downloadermiddleware.useragent import UserAgentMiddleware
class Uamid(UserAgentMiddleware):
# 初始化 注意一定要user_agent,不然容易報錯
def __init__(self, user_agent=”):
self.user_agent = user_agent
# 請求處理
def process_request(self, request, spider):
# 先隨機選擇一個用戶代理
thisua = random.choice(UAPOOL)
print(“當前使用User-Agent是:”+thisua)
request.headers.setdefault(‘User-Agent’,thisua)
在settings.py文件中添加用戶UserAgent的信息
# 設置用戶代理池,那些動態代理就放到這裡了
UAPOOL= [
“Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0”,
“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36”,
“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393”
]
「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 的問題,我們可以輕鬆通過加代理的方式來解決。
本節代碼:
原創文章,作者:TMJN,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/144217.html