搭建爬虫代理服务器:使用云服务器
要获取真实的客户端 IP 地址,你需要处理由反向代理服务器(如Nginx)转发的请求头。通常,经过反向代理服务器的请求会在。代理服务器的作用是代替客户端向目标服务器发送请求,然后将目标服务器的响应返回给客户端。在网络中,代理服务器可以用来隐藏客户端的真实 IP 地址,或者用于访问某些受限制的内容,或者实现缓存、安全策略等功能。在这个示例中,请求被发送到代理服务器,然后由代理服务器转发到指定的 UR
1.原理
代理服务器的作用是代替客户端向目标服务器发送请求,然后将目标服务器的响应返回给客户端。在网络中,代理服务器可以用来隐藏客户端的真实 IP 地址,或者用于访问某些受限制的内容,或者实现缓存、安全策略等功能。
在这个示例中,请求被发送到代理服务器,然后由代理服务器转发到指定的 URL。当服务器响应后,代理服务器将响应返回给客户端。因此,通过设置代理,客户端可以通过代理服务器与目标服务器进行通信。
我们的代理服务器使用的是flask与nginx来进行搭建。
2.技术
flask:搭建显示ip地址的网站
nginx:转发请求
request:使用代码的方式发起测试请求
3.关键部分代码
nginx
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://target_server_ip:target_server_port;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
flask
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def index():
ip_address = request.headers.get('X-Forwarded-For', request.remote_addr)
return f"Your IP address is: {ip_address}"
if __name__ == '__main__':
app.run(port=****, debug=True)
request
import requests
url = '*****'
proxy = {
'http': '*****',
}
response = requests.get(url, proxies=proxy)
if response.status_code == 200:
print("Response from server:")
print(response.text)
else:
print("Failed to get response from server.")
4.代码解析
4.1nginx
首先我们需要在我们的云服务器上安装nginx,安装教程有很多,如果有需要我们再单开一期
然后我们需要进行配置Nginx,
- 进入Nginx配置文件夹,通常是
/etc/nginx/
。 - 编辑
nginx.conf
或者sites-available/default
文件,根据你的需求进行配置。 your_domain.com
替换为你的域名或者服务器IP地址。target_server_ip
替换为你要转发请求的目标服务器的IP地址。target_server_port
替换为目标服务器的端口号。
4.2flask
Flask 默认只会将请求认为来自于本地(localhost),因此即使你在云服务器上运行 Flask 应用,它也会认为请求来自于本地地址(127.0.0.1)。要获取真实的客户端 IP 地址,你需要处理由反向代理服务器(如Nginx)转发的请求头。在 Flask 中,这可以通过检查特定的请求头来实现。通常,经过反向代理服务器的请求会在 X-Forwarded-For
头部中包含客户端的真实 IP 地址。
通过这样的修改,Flask 将首先尝试从 X-Forwarded-For
请求头中获取客户端的真实 IP 地址,如果找不到则使用默认的 request.remote_addr
,以便在本地开发时也能正常工作。当请求经过反向代理服务器时,X-Forwarded-For
请求头将包含一个或多个 IP 地址,以逗号分隔,第一个 IP 地址即为客户端的真实 IP 地址。
4.3request
这个是最简单的示例
在这个示例中,它发送了一个 GET 请求到指定的 URL,同时设置了代理服务器。
更多推荐
所有评论(0)