1窜司,代理類別
1沛善,F(xiàn)TP代理服務(wù)器:主要用于訪問(wèn)FTP服務(wù)器,一般有上傳例证、下載以及緩存功能路呜,端口一般為21、2121等。
2胀葱,HTTP代理服務(wù)器:主要用于訪問(wèn)網(wǎng)頁(yè)漠秋,一般有內(nèi)容過(guò)濾和緩存功能,端口一般為80抵屿、8080庆锦、3128等。
3轧葛,SSL/TLS代理:主要用于訪問(wèn)加密網(wǎng)站搂抒,一般有SSL或TLS加密功能(最高支持128位加密強(qiáng)度),端口一般為443尿扯。
4求晶,RTSP代理:主要用于訪問(wèn)Real流媒體服務(wù)器,一般有緩存功能衷笋,端口一般為554芳杏。
5,Telnet代理:主要用于telnet遠(yuǎn)程控制(黑客入侵計(jì)算機(jī)時(shí)常用于隱藏身份)辟宗,端口一般為23爵赵。
6,POP3/SMTP代理:主要用于POP3/SMTP方式收發(fā)郵件泊脐,一般有緩存功能空幻,端口一般為110/25。
7容客,SOCKS代理:只是單純傳遞數(shù)據(jù)包秕铛,不關(guān)心具體協(xié)議和用法,所以速度快很多缩挑,一般有緩存功能如捅,端口一般為1080。SOCKS代理協(xié)議又分為SOCKS4和SOCKS5调煎,前者只支持TCP,而后者支持TCP和UDP己肮,還支持各種身份驗(yàn)證機(jī)制士袄、服務(wù)器端域名解析等。簡(jiǎn)單來(lái)說(shuō)谎僻,SOCK4能做到的SOCKS5都可以做到娄柳,但SOCKS5能做到的SOCK4不一定能做到。
2艘绍,爬蟲(chóng)代理
對(duì)于爬蟲(chóng)來(lái)說(shuō)赤拒,由于爬蟲(chóng)爬取速度過(guò)快,在爬取過(guò)程中可能遇到同一個(gè)IP訪問(wèn)過(guò)于頻繁的問(wèn)題,此時(shí)網(wǎng)站就會(huì)讓我們輸入驗(yàn)證碼登錄或者直接封鎖IP挎挖,這樣會(huì)給爬取帶來(lái)極大的不便这敬。
使用代理隱藏真實(shí)的IP,讓服務(wù)器誤以為是代理服務(wù)器在請(qǐng)求自己蕉朵。這樣在爬取過(guò)程中通過(guò)不斷更換代理崔涂,就不會(huì)被封鎖,可以達(dá)到很好的爬取效果始衅。
3冷蚂,什么是HTTP代理
,HTTP代理本質(zhì)上是一個(gè)Web應(yīng)用汛闸,它和其他普通Web應(yīng)用沒(méi)有根本區(qū)別蝙茶。HTTP代理收到請(qǐng)求后,根據(jù)Header中Host字段的主機(jī)名和Get/POST請(qǐng)求地址綜合判斷目標(biāo)主機(jī)诸老,建立新的HTTP請(qǐng)求并轉(zhuǎn)發(fā)請(qǐng)求數(shù)據(jù)隆夯,并將收到的響應(yīng)數(shù)據(jù)轉(zhuǎn)發(fā)給客戶端。
4孕锄,python使用代理訪問(wèn)服務(wù)器
python使用代理訪問(wèn)服務(wù)器主要有一下3個(gè)步驟:
1.創(chuàng)建一個(gè)代理處理器ProxyHandler:
proxy_support = urllib.request.ProxyHandler()吮廉,ProxyHandler是一個(gè)類,其參數(shù)是一個(gè)字典:{ '類型':'代理ip:端口號(hào)'}
什么是Handler畸肆?Handler也叫作處理器宦芦,每個(gè)handlers知道如何通過(guò)特定協(xié)議打開(kāi)URLs,或者如何處理URL打開(kāi)時(shí)的各個(gè)方面轴脐,例如HTTP重定向或者HTTP cookies调卑。
2.定制、創(chuàng)建一個(gè)opener:
opener = urllib.request.build_opener(proxy_support)
什么是opener大咱?python在打開(kāi)一個(gè)url鏈接時(shí)恬涧,就會(huì)使用opener。其實(shí)碴巾,urllib.request.urlopen()函數(shù)實(shí)際上是使用的是默認(rèn)的opener溯捆,只不過(guò)在這里我們需要定制一個(gè)opener來(lái)指定handler。
3a.安裝opener
urllib.request.install_opener(opener)
install_opener 用來(lái)創(chuàng)建(全局)默認(rèn)opener厦瓢,這個(gè)表示調(diào)用urlopen將使用你安裝的opener提揍。
3b.調(diào)用opener
opener.open(url)
該方法可以像urlopen函數(shù)那樣直接用來(lái)獲取urls:通常不必調(diào)用install_opener,除了為了方便煮仇。
proxy = {u'https':u'14.118.253.99:6666'}
proxy_support = urllib2.ProxyHandler(proxy)# 注冊(cè)代理
opener = urllib2.build_opener(proxy_support)
urllib2.install_opener(opener)
opener.open(url)? ? #url 是你要訪問(wèn)的地址
5劳跃,從代理ip列表中隨機(jī)使用某ip去訪問(wèn)URL的例子
import urllib.request
import random
url = 'http://www.whatismyip.com.tw'
iplist = ['115.32.41.100:80','58.30.231.36:80','123.56.90.175:3128']
proxy_support = urllib.request.ProxyHandler({'http':random.choice(iplist)})
opener = urllib.request.build_opener(proxy_support)
opener.addheaders = [('User-Agent','Test_Proxy_Python3.5_maminyao')]
urllib.request.install_opener(opener)
response = urllib.request.urlopen(url)
html = response.read().decode('utf-8')
print(html)