代碼是正經(jīng)代碼,但是程序員正不正經(jīng)就不知道了。
?
前言
在使用爬蟲對某些網(wǎng)站進(jìn)行爬取時,為了不讓網(wǎng)站發(fā)現(xiàn)我們的ip,模擬其他用戶ip地址去訪問網(wǎng)站。也就相當(dāng)于間接的去訪問網(wǎng)站,流程如圖:
我們使用到代理服務(wù)器,去間接訪問網(wǎng)絡(luò),并通過代理返回?cái)?shù)據(jù)。而不是走直接訪問這條流程。
正文閱讀 第一、什么是代理服務(wù)器
代理服務(wù)器( )的功能是代理網(wǎng)絡(luò)用戶去取得網(wǎng)絡(luò)信息。形象地說,它是網(wǎng)絡(luò)信息的中轉(zhuǎn)站,是個人網(wǎng)絡(luò)和服務(wù)商之間的中間代理機(jī)構(gòu),負(fù)責(zé)轉(zhuǎn)發(fā)合法的網(wǎng)絡(luò)信息,對轉(zhuǎn)發(fā)進(jìn)行控制和登記。
第二、請求使用代理。
在已經(jīng)知道一個代理ip之后,我們?nèi)绾问褂媚兀?/p>
import requests response=requests.get("http://www.baidu.com",proxies={"http":"127.0.0.1:1245"}) print(response.text)
在使用requests模塊去請求接口時,便可以通過參數(shù)proxies 來進(jìn)行傳輸,將所需要的代理ip進(jìn)行設(shè)置。
第三、本地計(jì)算機(jī)如何使用代理服務(wù)器。
已經(jīng)學(xué)會了如何請求接口時,添加代理,那如何為本地結(jié)算機(jī)設(shè)置代理呢。
找到我們的代理ip,然后按照下面的操作進(jìn)行。
方法1:手動設(shè)置代理
1、按win鍵我裂開了,教給他如何搭建和使用代理服務(wù)器,他居然用來做這么不正經(jīng)的事(爬蟲,或者打開ie瀏覽器
2、搜索選項(xiàng),或者在ie瀏覽器右上角設(shè)置選擇選項(xiàng)。
3、點(diǎn)擊連接,找到局域網(wǎng)設(shè)置
4、勾選代理,并設(shè)置ip地址,端口。
這樣,我們就成功設(shè)置了代理,接下來訪問的所有數(shù)據(jù)都會傳輸?shù)竭@個代理ip中。
方法2:直接使用命令行修改
這么修改也太麻煩了一點(diǎn),直接使用命令行來解決是不是要簡單一點(diǎn)呢?
設(shè)置代理:
@echo off
echo 設(shè)置代理服務(wù)器……
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /d "39.106.223.1342:80" /f
start iexplore.exe
Pause
取消代理:
@echo off
echo 取消代理服務(wù)器……
reg add "hkcu\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0x0 /f
start iexplore.exe
Pause
這里為什么要啟動一下ie瀏覽器呢?主要是為了讓我們的配置生效,找了一些方法都不能生效,啟動一下ie瀏覽器生效比較快,還簡單。
第四、驗(yàn)證計(jì)算機(jī)代理ip是否有用,服務(wù)器接收情況。
我們已經(jīng)設(shè)置成功了,那我們訪問網(wǎng)站時是否有效呢?抱著這個因?yàn)椋覀兝^續(xù)來往下看。
需要做驗(yàn)證,那我們需要用到服務(wù)端。當(dāng)我們請求服務(wù)器時,顯示的ip,我們就可以知道是否生效。
服務(wù)器端:我們需要在服務(wù)器端搭建一個簡易網(wǎng)站,我們可以通過服務(wù)器打印的日志看出當(dāng)前請求的ip,這里我們使用的是服務(wù)器,如果有興趣研究學(xué)習(xí)的,可以先花五十元,去買一個月那種便宜的服務(wù)器玩一下。當(dāng)然用途不只是研究本課題,還有其他用途。
代碼如下:
from flask import *
app = Flask(__name__)
@app.route('/')
def index():
ip = request.remote_addr#獲取用戶ip
return "你的ip為"+ip
if __name__ == '__main__':
app.run(host="0.0.0.0",port=8088)#0000,允許所有用戶訪問,127.0.0.1允許本地用戶訪問。
這里,使用我的服務(wù)器ip便可以訪問,:8088/,網(wǎng)站:當(dāng)我們訪問這個鏈接,然后就可以查詢到ip。
1、原始ip
用戶端顯示:
服務(wù)器端請求情況:
Ok,成功獲取到我們的ip,接下來,我們換一個代理ip試一下。
2、代理ip
我們使用代理ip為58.240.52.114:80。
用戶端顯示:
服務(wù)器端顯示情況:
我們可以通過這個簡單的例子看出,我們本地使用的代理ip是生效的,那使用模塊請求呢,如圖,我們可以看到,是相同的結(jié)果。那說明代理ip對于服務(wù)器端來說,的確能起到掩蓋ip的作用。
第五、代理,安全,以及相關(guān)工具。
在本地設(shè)置代理方法有很多,比如上面提到的第三條。然后還有:
工具,如圖,我們可以通過設(shè)置代理端口來設(shè)置,本地請求的數(shù)據(jù),都會發(fā)送到127.0.0.1:8888:
只是其中一個,也是我們測試同學(xué)常用的一個軟件。另外還有也同樣可以設(shè)置代理,添加一個代理服務(wù)器。
當(dāng)然,還有其他很多工具,這里就不一一列舉了。
常用于爬蟲分析,安全分析,測試同學(xué)測試抓包。
這里能不能攔截使用代理呢。當(dāng)你使用了代理進(jìn)行訪問時,禁止訪問。
1、Js,app判斷是否系統(tǒng)設(shè)置代理,如果設(shè)置代理,給出警告,不加載數(shù)據(jù)
優(yōu)點(diǎn):快,缺點(diǎn):用戶修改js代碼,替換js,依然可以訪問。但一般用戶操作不了。多數(shù)人都是正常訪問的。
2、限制代理ip訪問,建立一個代理ip庫,將市面上的代理ip存儲進(jìn)去,用戶訪問時,與代理ip庫對比。如果有就直接禁制。
優(yōu)點(diǎn),能限制大多數(shù)代理ip。缺點(diǎn):額外增加查詢步驟,速度降低。
3、不限制。普通用戶一般不這樣操作,也不會,做好用戶檢驗(yàn),沒有這個用戶,你有代理ip也還是這個用戶。你換用戶,隨你換好了。
當(dāng)然大家還有什么好的方式也可以在評論區(qū)討論哦。
第六、搭建一個自己的代理服務(wù)器
搭建代理服務(wù)器,需要使用到一款軟件,。
資源鏈接(已破解):公眾號回復(fù)“代理服務(wù)器”便可獲取
將這款軟件安裝到你的服務(wù)器上,并啟動,通過設(shè)置,我們可以設(shè)置代理端口號。根據(jù)對應(yīng)需要服務(wù)進(jìn)行設(shè)置端口號。
這樣,我們的代理服務(wù)器就搭建好了,代理ip:123.207.31.148:808然后我們來驗(yàn)證我們代理是否有效。
第七、代理服務(wù)器有效性驗(yàn)證。
想要驗(yàn)證我們自己搭建的代理服務(wù)器是否有效,那我們這次直接來看,模塊是否有效,需要做的是對比代理服務(wù)器啟動前后的變化來判斷。
1、代理服務(wù)未啟動時
關(guān)閉代理,并請求接口,會提示代理服務(wù)器錯誤,就說明沒有這個代理:
import requests
response=requests.get("http://123.207.31.148:8088/",proxies={"http":"123.207.31.148:808"})
print(response.text)
2、代理服務(wù)器啟動時
我們啟動代理服務(wù)器,再來請求一下,我們可以從下面兩幅圖,以及和上面做出對比,ip也是我們設(shè)置的代理服務(wù)器,我們的代理服務(wù)器有效。
用戶端:
服務(wù)器端:
3、修改代理服務(wù)器端口
我們將原來的808端口修改為8081,再來試一下。808也就不再生效。
8081請求:
這樣,我們的代理服務(wù)器也就說明設(shè)置是有效的。
第八、爬取代理服務(wù)器
我們一個代理服務(wù)器已經(jīng)搞定了,相同的,當(dāng)我們有幾百,上千個服務(wù)器,都搭建了代理服務(wù)器,那我們是不是擁有了自己的代理ip池。但我們沒那么多錢,也沒必要。只能去用別人的了。
代理ip池獲取,代碼如下:
import requests
from bs4 import BeautifulSoup
?
def proxy_ip(protocol=["http"],anonlv1=[],country=["CN"]):
"""
:param protocol: 請求方式:http,https,socks4,socks5
:param anonlv1: 級別:1,2,3,4 L1 – 透明,L2 – 匿名,L3 – 扭曲,L4 – 精英
:param country: 國家,無為全部,CN 中國
:return:ip_list,ip列表
"""
text=""
for i in protocol:
text+="protocol="+i+"&"
for i in anonlv1:
text+="anonlv1="+i+"&"
for i in country:
text+="country="+i+"&"
global headers
headers={
'cookie': '_ga=GA1.2.1786575828.1619658683; _gid=GA1.2.555491280.1623999959; _gat=1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36'
}
response=requests.get("http://proxydb.net/?"+text,headers=headers)
Soup = BeautifulSoup(response.text, "html.parser")
table = Soup.find_all("table")[0].find_all("a")
list=[]
for i in table:
ip=i.get_text()
list.append(ip)
return list
文章總結(jié)
通過本文,你可以了解到
1、模塊如何設(shè)置代理。
2、代理ip設(shè)置是否真有效。
3、如何搭建自己的代理服務(wù)器。
4、代理ip池的獲取。
處于安全方面來說,因?yàn)槲覀冋埱髸r,數(shù)據(jù)會發(fā)送到代理服務(wù)器,如果請求在賬號密碼是明文的情況下,代理服務(wù)器就可以獲取到你的賬號信息。
同理,翻墻軟件也是一種代理,只不過他代理到國外去了。翻墻軟件也是能獲取到你的用戶信息的哦,所以大家需要注意個人信息安全呀。
免責(zé)聲明:本文系轉(zhuǎn)載自其它媒體,版權(quán)歸原作者所有;旨在傳遞信息,不代表本站的觀點(diǎn)、立場和對其真實(shí)性負(fù)責(zé)。如需轉(zhuǎn)載,請聯(lián)系原作者。如果來源標(biāo)注有誤或侵犯了您的合法權(quán)益等其他原因不想在本站發(fā)布,來信即刪。