天天看點

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

大家好,又見面了,我是全棧君。

代碼是正經代碼,但是程式員正不正經就不知道了。

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

前言

在使用爬蟲對某些網站進行爬取時,為了不讓網站發現我們的ip,模拟其他使用者ip位址去通路網站。也就相當于間接的去通路網站,流程如圖:

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

我們使用到代理伺服器,去間接通路網絡,并通過代理傳回資料。而不是走直接通路這條流程。

正文閱讀

第一、什麼是代理伺服器

代理伺服器(Proxy Server)的功能是代理網絡使用者去取得網絡資訊。形象地說,它是網絡資訊的中轉站,是個人網絡和Internet服務商之間的中間代理機構,負責轉發合法的網絡資訊,對轉發進行控制和登記。

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

第二、Requests請求使用代理。

在已經知道一個代理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、搜尋internet選項,或者在ie浏覽器右上角設定選擇internet選項。

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

3、點選連接配接,找到區域網路設定

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

4、勾選代理,并設定ip位址,端口。

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理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)[通俗易懂]前言正文閱讀文章總結

伺服器端:我們需要在伺服器端搭建一個簡易網站,我們可以通過伺服器列印的日志看出目前請求的ip,這裡我們使用的是windows伺服器,如果有興趣研究學習的,可以先花五十元,去買一個月那種便宜的伺服器玩一下。當然用途不隻是研究本課題,還有其他用途。

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理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便可以通路,http://123.207.31.148:8088/,網站:http://www.djyqxbc.vip當我們通路這個連結,然後就可以查詢到ip。

1、原始ip

使用者端顯示:

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

伺服器端請求情況:

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

Ok,成功擷取到我們的ip,接下來,我們換一個代理ip試一下。

2、代理ip

我們使用代理ip為58.240.52.114:80。

使用者端顯示:

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

伺服器端顯示情況:

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

我們可以通過這個簡單的例子看出,我們本地使用的代理ip是生效的,那使用requests子產品請求呢,如圖,我們可以看到,是相同的結果。那說明代理ip對于伺服器端來說,的确能起到掩蓋ip的作用。

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

第五、Fiddle代理,安全,以及相關工具。

在本地設定代理方法有很多,比如上面提到的第三條。然後還有:

Fiddle工具,如圖,我們可以通過設定代理端口來設定,本地請求的資料,都會發送到127.0.0.1:8888:

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

Fiddle隻是其中一個,也是我們測試同學常用的一個軟體。另外還有jmeter也同樣可以設定代理,添加一個代理伺服器。

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

當然,還有其他很多工具,這裡就不一一列舉了。

Fiddle常用于爬蟲分析,安全分析,測試同學測試抓包。

這裡能不能攔截使用代理呢。當你使用了代理進行通路時,禁止通路。

1、Js,app判斷是否系統設定代理,如果設定代理,給出警告,不加載資料

優點:快,缺點:使用者修改js代碼,替換js,依然可以通路。但一般使用者操作不了。多數人都是正常通路的。

2、限制代理ip通路,建立一個代理ip庫,将市面上的代理ip存儲進去,使用者通路時,與代理ip庫對比。如果有就直接禁制。

優點,能限制大多數代理ip。缺點:額外增加查詢步驟,速度降低。

3、不限制。普通使用者一般不這樣操作,也不會,做好使用者檢驗,沒有這個使用者,你有代理ip也還是這個使用者。你換使用者,随你換好了。

當然大家還有什麼好的方式也可以在評論區讨論哦。

第六、搭建一個自己的代理伺服器

搭建代理伺服器,需要使用到一款軟體,ccproxy。

将這款軟體安裝到你的伺服器上,并啟動,通過設定,我們可以設定代理端口号。根據對應需要服務進行設定端口号。

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

這樣,我們的代理伺服器就搭建好了,代理ip:123.207.31.148:808然後我們來驗證我們代理是否有效。

第七、代理伺服器有效性驗證。

想要驗證我們自己搭建的代理伺服器是否有效,那我們這次直接來看,request子產品是否有效,需要做的是對比代理伺服器啟動前後的變化來判斷。

1、代理服務未啟動時

關閉代理,并請求接口,會提示代理伺服器錯誤,就說明沒有這個代理:

import requests
response=requests.get("http://123.207.31.148:8088/",proxies={"http":"123.207.31.148:808"})
print(response.text)           

複制

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

2、代理伺服器啟動時

我們啟動代理伺服器,再來請求一下,我們可以從下面兩幅圖,以及和上面做出對比,ip也是我們設定的代理伺服器,我們的代理伺服器有效。

使用者端:

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

伺服器端:

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

3、修改代理伺服器端口

我們将原來的808端口修改為8081,再來試一下。808也就不再生效。

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結
我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

8081請求:

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

這樣,我們的代理伺服器也就說明設定是有效的。

第八、爬取代理伺服器

我們一個代理伺服器已經搞定了,相同的,當我們有幾百,上千個伺服器,都搭建了代理伺服器,那我們是不是擁有了自己的代理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、requests子產品如何設定代理。

2、代理ip設定是否真有效。

3、如何搭建自己的代理伺服器。

4、代理ip池的擷取。

處于安全方面來說,因為我們請求時,資料會發送到代理伺服器,如果請求在賬号密碼是明文的情況下,代理伺服器就可以擷取到你的賬号資訊。

同理,翻牆軟體也是一種代理,隻不過他代理到國外去了。翻牆軟體也是能擷取到你的使用者資訊的哦,是以大家需要注意個人資訊安全呀。

我裂開了,教給他如何搭建和使用代理伺服器,他居然用來做這麼不正經的事(爬蟲,代理ip)[通俗易懂]前言正文閱讀文章總結

釋出者:全棧程式員棧長,轉載請注明出處:https://javaforall.cn/111355.html原文連結:https://javaforall.cn