代碼是正經代碼,但是程序員正不正經就不知道了。
?
前言
在使用爬蟲對某些網站進行爬取時,為了不讓網站發現我們的ip,模擬其他用戶ip地址去訪問網站。也就相當于間接的去訪問網站,流程如圖:
我們使用到代理服務器,去間接訪問網絡,并通過代理返回數據。而不是走直接訪問這條流程。
正文閱讀 第一、什么是代理服務器
代理服務器( )的功能是代理網絡用戶去取得網絡信息。形象地說,它是網絡信息的中轉站,是個人網絡和服務商之間的中間代理機構,負責轉發合法的網絡信息,對轉發進行控制和登記。
第二、請求使用代理。
在已經知道一個代理ip之后,我們如何使用呢?
import requests response=requests.get("http://www.baidu.com",proxies={"http":"127.0.0.1:1245"}) print(response.text)
在使用requests模塊去請求接口時,便可以通過參數proxies 來進行傳輸,將所需要的代理ip進行設置。
第三、本地計算機如何使用代理服務器。
已經學會了如何請求接口時,添加代理,那如何為本地結算機設置代理呢。
找到我們的代理ip,然后按照下面的操作進行。
方法1:手動設置代理
1、按win鍵我裂開了,教給他如何搭建和使用代理服務器,他居然用來做這么不正經的事(爬蟲,或者打開ie瀏覽器
2、搜索選項,或者在ie瀏覽器右上角設置選擇選項。
3、點擊連接,找到局域網設置
4、勾選代理,并設置ip地址,端口。
這樣,我們就成功設置了代理,接下來訪問的所有數據都會傳輸到這個代理ip中。
方法2:直接使用命令行修改
這么修改也太麻煩了一點,直接使用命令行來解決是不是要簡單一點呢?
設置代理:
@echo off
echo 設置代理服務器……
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 取消代理服務器……
reg add "hkcu\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0x0 /f
start iexplore.exe
Pause
這里為什么要啟動一下ie瀏覽器呢?主要是為了讓我們的配置生效,找了一些方法都不能生效,啟動一下ie瀏覽器生效比較快,還簡單。
第四、驗證計算機代理ip是否有用,服務器接收情況。
我們已經設置成功了,那我們訪問網站時是否有效呢?抱著這個因為,我們繼續來往下看。
需要做驗證,那我們需要用到服務端。當我們請求服務器時,顯示的ip,我們就可以知道是否生效。
服務器端:我們需要在服務器端搭建一個簡易網站,我們可以通過服務器打印的日志看出當前請求的ip,這里我們使用的是服務器,如果有興趣研究學習的,可以先花五十元,去買一個月那種便宜的服務器玩一下。當然用途不只是研究本課題,還有其他用途。
代碼如下:
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允許本地用戶訪問。
這里,使用我的服務器ip便可以訪問,:8088/,網站:當我們訪問這個鏈接,然后就可以查詢到ip。
1、原始ip
用戶端顯示:
服務器端請求情況:
Ok,成功獲取到我們的ip,接下來,我們換一個代理ip試一下。
2、代理ip
我們使用代理ip為58.240.52.114:80。
用戶端顯示:
服務器端顯示情況:
我們可以通過這個簡單的例子看出,我們本地使用的代理ip是生效的,那使用模塊請求呢,如圖,我們可以看到,是相同的結果。那說明代理ip對于服務器端來說,的確能起到掩蓋ip的作用。
第五、代理,安全,以及相關工具。
在本地設置代理方法有很多,比如上面提到的第三條。然后還有:
工具,如圖,我們可以通過設置代理端口來設置,本地請求的數據,都會發送到127.0.0.1:8888:
只是其中一個,也是我們測試同學常用的一個軟件。另外還有也同樣可以設置代理,添加一個代理服務器。
當然,還有其他很多工具,這里就不一一列舉了。
常用于爬蟲分析,安全分析,測試同學測試抓包。
這里能不能攔截使用代理呢。當你使用了代理進行訪問時,禁止訪問。
1、Js,app判斷是否系統設置代理,如果設置代理,給出警告,不加載數據
優點:快,缺點:用戶修改js代碼,替換js,依然可以訪問。但一般用戶操作不了。多數人都是正常訪問的。
2、限制代理ip訪問,建立一個代理ip庫,將市面上的代理ip存儲進去,用戶訪問時,與代理ip庫對比。如果有就直接禁制。
優點,能限制大多數代理ip。缺點:額外增加查詢步驟,速度降低。
3、不限制。普通用戶一般不這樣操作,也不會,做好用戶檢驗,沒有這個用戶,你有代理ip也還是這個用戶。你換用戶,隨你換好了。
當然大家還有什么好的方式也可以在評論區討論哦。
第六、搭建一個自己的代理服務器
搭建代理服務器,需要使用到一款軟件,。
資源鏈接(已破解):公眾號回復“代理服務器”便可獲取
將這款軟件安裝到你的服務器上,并啟動,通過設置,我們可以設置代理端口號。根據對應需要服務進行設置端口號。
這樣,我們的代理服務器就搭建好了,代理ip:123.207.31.148:808然后我們來驗證我們代理是否有效。
第七、代理服務器有效性驗證。
想要驗證我們自己搭建的代理服務器是否有效,那我們這次直接來看,模塊是否有效,需要做的是對比代理服務器啟動前后的變化來判斷。
1、代理服務未啟動時
關閉代理,并請求接口,會提示代理服務器錯誤,就說明沒有這個代理:
import requests
response=requests.get("http://123.207.31.148:8088/",proxies={"http":"123.207.31.148:808"})
print(response.text)
2、代理服務器啟動時
我們啟動代理服務器,再來請求一下,我們可以從下面兩幅圖,以及和上面做出對比,ip也是我們設置的代理服務器,我們的代理服務器有效。
用戶端:
服務器端:
3、修改代理服務器端口
我們將原來的808端口修改為8081,再來試一下。808也就不再生效。
8081請求:
這樣,我們的代理服務器也就說明設置是有效的。
第八、爬取代理服務器
我們一個代理服務器已經搞定了,相同的,當我們有幾百,上千個服務器,都搭建了代理服務器,那我們是不是擁有了自己的代理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
文章總結
通過本文,你可以了解到
1、模塊如何設置代理。
2、代理ip設置是否真有效。
3、如何搭建自己的代理服務器。
4、代理ip池的獲取。
處于安全方面來說,因為我們請求時,數據會發送到代理服務器,如果請求在賬號密碼是明文的情況下,代理服務器就可以獲取到你的賬號信息。
同理,翻墻軟件也是一種代理,只不過他代理到國外去了。翻墻軟件也是能獲取到你的用戶信息的哦,所以大家需要注意個人信息安全呀。
免責聲明:本文系轉載自其它媒體,版權歸原作者所有;旨在傳遞信息,不代表本站的觀點、立場和對其真實性負責。如需轉載,請聯系原作者。如果來源標注有誤或侵犯了您的合法權益等其他原因不想在本站發布,來信即刪。