爬取别人网站的优选反代IP

项目地址:https://github.com/ymyuuu/Proxy-IP-library

博客地址:https://www.enlightenx.cloudns.biz/

环境准备

# 安装Nginx
sudo apt install nginx

# 安装Python3和pip
sudo apt install python3 python3-pip

构建

  1. 创建项目文件夹
    在服务器上选择一个适当的位置,例如 /var/www/myflaskapp,并在该目录下创建一个新的文件夹:
    sudo mkdir /root/myflaskapp
  2. 进入项目文件夹:
    使用 cd 命令进入新创建的文件夹:
    cd /var/www/myflaskapp
  3. 创建虚拟环境:
    为了隔离你的应用程序环境,建议在项目文件夹内创建一个虚拟环境。使用以下命令:
    sudo apt-get install python3-venv  # 安装虚拟环境工具
    python3 -m venv myenv # 创建虚拟环境
    source myenv/bin/activate # 激活虚拟环境
  4. 安装 Flask 和其他依赖:
    在虚拟环境中安装 Flask 和其他必要的依赖:
    pip install flask requests beautifulsoup4
  5. 创建 Flask 应用程序文件:
    在项目文件夹中创建一个名为 app.py 的文件,并将下面的 Flask 应用程序代码复制到该文件中。
    from flask import Flask, render_template
    import requests
    from bs4 import BeautifulSoup

    app = Flask(__name__)

    def get_ips():
    try:
    # 抓取目标网页的内容
    url = 'https://proxy-ip.030101.xyz/bestip'
    response = requests.get(url)
    response.raise_for_status() # 检查是否有网络请求错误

    # 提取IP地址
    ips = []
    lines = response.text.split('\n')
    for line in lines:
    if '.' in line: # 简单判断是否包含点,作为 IP 地址的标志
    ips.append(line.strip())

    return ips
    except Exception as e:
    # 处理异常情况,例如网络请求失败或解析错误
    print(f"Error: {e}")
    return []

    @app.route('/')
    def index():
    # 获取实时的IP地址
    ips = get_ips()

    return render_template('index.html', ips=ips)

    if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5000)

  6. 创建模板和静态文件夹:
    在项目文件夹中创建一个名为 templates 的文件夹,然后在其中创建 index.html 文件。同时,创建一个名为 static 的文件夹用于存放 CSS 或其他静态文件。
    mkdir templates
    touch templates/index.html
    mkdir static
  7. 运行 Flask 应用程序:
    回到项目文件夹,确保虚拟环境已激活,然后运行 Flask 应用程序:
    cd /root/myflaskapp
    source myenv/bin/activate
    python app.py
    你应该会看到输出表明 Flask 应用程序正在运行。你可以访问 http://your-server-ip:5000/ 来查看应用程序是否正常运行。如果一切正常,你应该能够在页面上看到从 https://proxy-ip.030101.xyz/bestip 提取的 IP 地址。
  8. 设置 Nginx 反向代理:
    为了使你的 Flask 应用程序能够通过标准的 HTTP 端口(80)访问,你可以设置 Nginx 反向代理。编辑 Nginx 配置文件(通常位于 /etc/nginx/sites-available/default),在 server 部分添加以下配置:
    server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
    try_files $uri $uri/ =404;
    proxy_pass http://127.0.0.1:5000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /ipv4/ {
    proxy_pass http://127.0.0.1:5000/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }


    # 其他可能的配置...

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    # deny all;
    #}
    }

  9. 重启 Nginx:
    保存 Nginx 配置文件后,重启 Nginx 以使更改生效:
    sudo systemctl restart nginx
  10. 创建一个 Systemd 服务文件:
    创建一个名为 myflaskapp.service 的文件,用于定义你的 Flask 应用程序服务。可以在 /etc/systemd/system/ 目录下创建这个文件,并写入以下内容:
    [Unit]
    Description=My Flask App
    After=network.target

    [Service]
    ExecStart=/root/myflaskapp/myenv/bin/python /root/myflaskapp/app.py
    WorkingDirectory=/root/myflaskapp/
    Environment="FLASK_ENV=production"
    Environment="FLASK_APP=app.py"
    Restart=always
    User=root
    Group=root

    [Install]
    WantedBy=multi-user.target
  11. 重载 Systemd 并启动服务:
    保存并关闭文件后,重新加载 systemd 并启动你的服务:
    sudo systemctl daemon-reload
    sudo systemctl start myflaskapp
  12. 设置开机自启动:
    如果你希望在服务器启动时自动启动你的 Flask 应用程序服务,可以使用以下命令:
    sudo systemctl enable myflaskapp
    现在,每次服务器重启后,你的 Flask 应用程序服务都会自动启动。
  13. 查看服务状态:
    你可以使用以下命令查看服务的状态:
    sudo systemctl status myflaskapp