AWS Proxy Server 搭建
時間:2023-07-07 19:33:01 | 來源:網(wǎng)站運(yùn)營
時間:2023-07-07 19:33:01 來源:網(wǎng)站運(yùn)營
AWS Proxy Server 搭建: 在數(shù)據(jù)科學(xué)領(lǐng)域,網(wǎng)頁爬蟲是獲取外部數(shù)據(jù)(external data)的重要來源。但是在現(xiàn)有的反爬蟲機(jī)制日益普遍且完善的情況下,簡單的暴力爬蟲已經(jīng)越來越無法滿足實(shí)際的數(shù)據(jù)獲取需求。
具體而言,反爬蟲機(jī)制中廣泛應(yīng)用的一個辦法就是檢查訪問請求的ip地址。若在短時間大量訪問網(wǎng)站,網(wǎng)站的服務(wù)器即會觸發(fā)字符驗(yàn)證或者屏蔽該ip地址等操作。因而在很多時候,為了避免被ip被屏蔽列入黑名單或是手動輸入驗(yàn)證碼,爬蟲者會采取用代理服務(wù)器(proxy server)以變更ip地址。以下是一個proxy server的原理示意圖:
比如路人甲的家庭網(wǎng)ip地址是1.1.1.1,現(xiàn)在他想要爬蟲本站的熱點(diǎn)話題,于是他利用ip地址是2.2.2.2的proxy server代理他提出訪問請求。于是在本站看來,這次的訪問是從ip地址2.2.2.2的服務(wù)器發(fā)出的。通過不斷更換proxy server,可以有效地減少被檢測到爬蟲的概率。
當(dāng)然值得一提的是,proxy server本身的設(shè)計很大程度上是為了隱私。嚴(yán)格意義上是通過匿名(anonymity)的方式,保障了隱私(privacy)。例如,某人想要訪問一些網(wǎng)頁,但是不想被這些網(wǎng)頁的服務(wù)器收集到自己所在ip下的訪問內(nèi)容和時間規(guī)律。于是他可以使用proxy server做代理訪問。
在當(dāng)下社會分工高度細(xì)化的時代,其實(shí)在網(wǎng)上可以找到很多或免費(fèi)或收費(fèi)的proxy server。其中收費(fèi)的代理服務(wù)往往是通過付費(fèi)api的形式實(shí)現(xiàn)。在谷歌上查找一下,就有很多這樣的網(wǎng)站提供proxy server api的服務(wù)。例如:
但是在個人看來,這里有幾個問題。一是很多這樣的代理網(wǎng)站會被封,類似于VPN的網(wǎng)站;二是有些網(wǎng)站的收費(fèi)其實(shí)略貴;三是不能保證這些代理的網(wǎng)站是否會收集用戶的訪問相關(guān)數(shù)據(jù)。當(dāng)然,每個人有自己的利弊權(quán)衡。
言歸正傳,下面談?wù)勅绾卧趤嗰R遜云(AWS)上搭建自己的proxy server。
- 第二步: 創(chuàng)建EC2 instance
搜索EC2選擇EC2服務(wù)器所在服務(wù)區(qū)點(diǎn)擊launch instance選擇Ubuntu Server XX.04 LTS, 此處以20.04 LTS為例任選一個instance type,其中t2.micro可以免費(fèi)試用根據(jù)實(shí)際需求更改storage,添加tags以及設(shè)置security group修改security group設(shè)置:1. 添加port range(tinyproxy默認(rèn)的port是8888,也可以添加別的port,本例中加入7777)2.為了安全性,可以將source設(shè)置為自己本地電腦的網(wǎng)絡(luò)IP,這樣只有自己的網(wǎng)絡(luò)可以連接,從而避免proxy server被知道IP和端口的任何人試用創(chuàng)建ssh key并下載到本地- 第三步:利用ssh key連接遠(yuǎn)端linux服務(wù)器
點(diǎn)擊connectaws提供相應(yīng)的ssh連接參考命令行以os系統(tǒng)為例- 第四步(optional):給EC2 instance添加靜態(tài)IP地址,從而每次關(guān)機(jī)再重啟,IP地址不會發(fā)生變化。(AWS默認(rèn)會動態(tài)給EC2 instance分配IP,當(dāng)關(guān)機(jī)后IP自動被釋放到IP池中以增加IP的利用率)添加的靜態(tài)IP地址在EC2 instance不運(yùn)行時會收取一小筆“占坑費(fèi)”。本例中,靜態(tài)IP地址為52.72.15.228
- 第五步:在遠(yuǎn)端linux服務(wù)器上安裝Tinyproxy
運(yùn)行以下命令行:
sudo apt-get updatesudo apt-get install tinyproxy
而后用vim打開configuraion文件:
sudo vim tinyproxy.conf
在文件中,用#注釋掉所有已有的IP地址
#Allow 127.0.0.1#Allow 192.168.0.0/16#Allow 172.16.0.0/12#Allow 10.0.0.0/8
添加本地IP
Allow xxx.xxx.xxx.xxx
添加port
Port 8888Port 7777
保存configuration文件
重啟tinyproxy
sudo service tinyproxy restart
- 第六步 檢查proxy server是否運(yùn)行成功
我們可以用python request包進(jìn)行簡單的測試,代碼如下:
import requests proxy="https:52.72.15.228:7777"html = requests.get("https://api.ipify.org/", proxies={"https":proxy}, timeout=5) html.content.decode('latin-1')
注意到proxy中的IP地址是在第四步中的靜態(tài)IP地址。proxy server運(yùn)行成功!