如果需要使用代理戚炫,requests支持proxies 命名參數(shù)和配置變量兩種方式來配置代理仁堪。
proxies 命名參數(shù)
可以通過任意請求方法的proxies 命名參數(shù)來指定代理方式。其中http協(xié)議和https協(xié)議相互獨立打却,設(shè)置方式為
proxies = {
"http": "代理主機ip及端口號",
"https": "代理主機ip及端口號",
}
由于requests庫的調(diào)試離不開fiddler工具杉适,這里就以設(shè)置fiddler代理為例進行演示。
當(dāng)fiddler啟動后會自動開啟internet代理(如下圖)柳击,當(dāng)在瀏覽器訪問網(wǎng)頁會自動通過代理猿推,將訪問轉(zhuǎn)入fiddler,fiddler便能夠攔截到瀏覽器訪問的請求捌肴。
但如果使用requests庫用代碼請求某個網(wǎng)頁時蹬叭,默認不會使用fiddler的代理藕咏。這時就需要手動在代碼中設(shè)置代理。
通過fiddler菜單-Tools-Options-Connections查看代理端口號:
由代理端口號秽五,可以得出本機fiddler代理地址為
http://127.0.0.1:8888
import requests
if __name__ == '__main__':
# 請求地址
url = 'http://www.sogou.com/'
# 代理
proxies = {
"http": "http://127.0.0.1:8888",
}
r = requests.get(url, proxies=proxies)
代碼執(zhí)行后孽查,如果能夠在fiddler中能夠攔截到requests所發(fā)送的請求,則代理設(shè)置成功筝蚕。
環(huán)境變量
除了通過指定proxies 命名參數(shù)外卦碾,requests還提供了使用環(huán)境變量的方式來添加代理。requests提供HTTP_PROXY
和 HTTPS_PROXY
環(huán)境變量,其中HTTP_PROXY
為http協(xié)議設(shè)置代理起宽,HTTPS_PROXY
用于設(shè)置https協(xié)議的代理方式 洲胖。和命名參數(shù)相比,環(huán)境變量有以下優(yōu)點:
- 作用范圍廣坯沪,可作用于所有的請求
- 可插拔绿映,設(shè)置環(huán)境變量使用代理,不設(shè)置則不使用代理腐晾。
- 若代理主機變動叉弦,代碼無需修改,更優(yōu)雅藻糖。
還是和上篇設(shè)置fiddler代理一樣淹冰,演示下采用環(huán)境變量的方式設(shè)置代理。
-
設(shè)置環(huán)境變量(設(shè)置環(huán)境變量后巨柒,重啟電腦才會生效)
設(shè)置環(huán)境變量
2.編輯代碼發(fā)送請求
import requests
if __name__ == '__main__':
# 請求地址
url = 'http://www.sogou.com/'
r = requests.get(url)
3.啟動fiddler樱拴,執(zhí)行代碼,若fiddler能攔截到請求則設(shè)置成功洋满。