想要获取访问者的IP(公网地址),就必须要把项目部署在服务器上
一:前期准备
1.需要的材料
- 一台有公网IP的服务器
- Django项目:https://gitee.com/xuexianqi/spider-test
2.采用的方案
- 云服务器上安装Docker
- Docker中用CentOS拉起Django项目
3.需要注意的点
- Django项目的
settings
中的ALLOW_HOST
需要改为['*']
- 启动的时候,允许访问的IP设置为:
0.0.0.0
- 服务器的端口(安全组)需要放行
二:项目部署
1.安装 并 启动Docker
http://www.xuexianqi.top/archives/664.html
2.拉取CentOS7.9
docker pull centos:7.9.2009
3.启动CentOS7.9
- 启动的时候要进行端口映射
docker run -dit -p 8000:8000 --name centos01 centos:7.9.2009
- 查看已启动的容器
docker ps
4.进入容器
docker exec -it centos01 bash
5.安装一些需要的工具
- vim:文本编辑器 - 用于编辑文件
- net-tools:网络工具 - 用于查看网络 和 ping其他网络
- python36:Python解释器 - 用于安装Django项目的依赖
- git:版本控制工具 - 用于拉取项目
yum install vim net-tools python36 git -y
6.测试网络
ping www.baidu.com
7.拉取Git项目
① 创建并进入自定义的目录
mkdir /Test && cd /Test
② 拉取Django项目
git clone https://gitee.com/xuexianqi/spider-test.git
8.进入项目,安装依赖
项目所需的依赖都在requirements.txt
中,用pip3
可以一键安装(这里指定pip豆瓣源)
cd spider-test
pip3 install -r requirements.txt -i https://pypi.douban.com/simple/
9.迁移数据
① 由于用的是Sqlite数据库,需要修改一些代码
# 用vim编辑器打开
vim /usr/local/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py
# 显示代码行号(大概在第66行)
:set nu
# 按i进入插入模式,注释掉第66行
i
# 注释完成,保存并退出
Esc
:wq
因为这里的代码会检测sqlite的版本,版本过低就直接报错
所以直接注释掉检测的代码即可
注释前
注释后
python3 manage.py makemigrations
python3 manage.py migrate
10.启动项目
python3 manage.py runserver 0.0.0.0:8000
三:访问测试
1.PC端测试
① 先去百度一下当前的IP地址
② 浏览器访问测试
2.移动端测试
- 移动端需要用流量来测试,如果连了无线网,那么结果会和同一局域网的PC端一样
① 查看移动端IP地址
② 访问Django项目的IP
③ 服务端监测到的IP
四:代理测试
1.不试用代理
不使用代理,就是单纯地用本机真实的IP地址去访问
import requests
url = 'http://[公网IP]:[端口号]' # 这里替换成自己的URL即可
res = requests.get(url)
print(res)
print(res.text)
2.使用代理
import requests
proxies = {
'http': '113.195.152.50:9999',
}
url = 'http://[公网IP]:[端口号]' # 这里替换成自己的URL即可
res = requests.get(url, proxies=proxies)
print(res)
print(res.text)
文章出处: http://www.xuexianqi.top/