From 4ad1eed17132371815a2de5adbb9bbe81a83f2ab Mon Sep 17 00:00:00 2001 From: work Date: Sun, 27 Apr 2025 16:19:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0CICD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/cd.yaml | 58 +++++++++++++++++++++ const.py | 2 +- main.py | 2 +- requirements.txt | Bin 2458 -> 2518 bytes spider/task.py | 110 ++++++++++++++++++++------------------- 5 files changed, 117 insertions(+), 55 deletions(-) create mode 100644 .gitea/workflows/cd.yaml diff --git a/.gitea/workflows/cd.yaml b/.gitea/workflows/cd.yaml new file mode 100644 index 0000000..4b0b849 --- /dev/null +++ b/.gitea/workflows/cd.yaml @@ -0,0 +1,58 @@ +name: Update Code + +on: + push: + branches: + - master +env: + DESTINATION: C:\Facebook + REPOSITORY_URL: http://deploy:123qwe123@123.58.209.87:3000/py_facebook/py_facebook.git + +jobs: + CD: + runs-on: ${{ matrix.machine }} + defaults: + run: + shell: powershell + strategy: + matrix: + machine: + - windows-101.36.102.136 + steps: + - name: 更新或clone项目 + shell: powershell + run: | + if (-not (Test-Path -Path $env:DESTINATION\.git)) { + # 目录不存在,执行 git clone + git clone $env:REPOSITORY_URL $env:DESTINATION + } + else { + # 目录存在,执行 git pull + Set-Location $env:DESTINATION + git pull + } + - name: Set up Python + uses: actions/setup-python@v3 + with: + python-version: "3.10" + - name: Install dependencies + run: | + Set-Location $env:DESTINATION + "${{ matrix.machine }}" | Set-Content -Path "ip.txt" -Encoding UTF8 + python -m pip install --upgrade pip + pip install -r requirements.txt + python -m playwright install + python -m playwright install-deps +# python -m playwright install msedge + - name: Stop previous service + run: | + try { + Stop-Process -Name "python" -Force -ErrorAction SilentlyContinue + } catch {} + - name: PIP LIST + run: pip list + - name: Start FastAPI server + timeout-minutes: 3 # 设定超时时间为 3 分钟 + run: | + Set-Location $env:DESTINATION + Start-Process -WindowStyle hidden -FilePath python .\main.py \ No newline at end of file diff --git a/const.py b/const.py index da07310..61b8e5c 100644 --- a/const.py +++ b/const.py @@ -19,7 +19,7 @@ ELEMENT = { ENDPOINT = "154.19.186.49" ACCESS_KEY = '3QcjsqdCYCoy1khuDqia' SECRET_KEY = 'iPXte32y1deoySiDq0RwONUJIiIgvjTVhbfCL8tV' -BUCKET = 'test' +BUCKET = 'facebook' # DOVE PROXY DOVE_USER = 'fetdog' diff --git a/main.py b/main.py index f905160..4a6c204 100644 --- a/main.py +++ b/main.py @@ -12,7 +12,7 @@ TASK_TYPE = { 'login_account': playwright_login } -HOST = "http://192.168.1.69:8001" +HOST = "http://118.193.40.152:8002" def get_task(): diff --git a/requirements.txt b/requirements.txt index 742f1e5f392ae6195af4a592dca810b8d08f3569..dd4186649de4321d94ea2ac73bfc530b2195c6de 100644 GIT binary patch delta 68 zcmbOwd`)=6EKVC<1}=sIhDwHVhD?S$24e;z23sIBW-wqdWq`>Q0Oe5SjezQm8357` B3y1&! delta 7 Ocmca6JWF`PEKUFn?gHun diff --git a/spider/task.py b/spider/task.py index 8f0c8e9..1a3485c 100644 --- a/spider/task.py +++ b/spider/task.py @@ -1,19 +1,24 @@ import io +import json +import os +import random +import sys +import threading import time import uuid -import json -import random -import requests -import threading -import sys -import os + import pyotp -from const import MIMETYPE, BUCKET, PIC_TYPE, BASE_PATH, api_url -from miniofile import client, put_object -from exceptions import AuthException, OperationFailed -from playwright.sync_api import sync_playwright, Error, TimeoutError +import pywintypes +import requests +import win32api +import win32con from PIL import ImageGrab -from lxml import html +from playwright.sync_api import sync_playwright, Error, TimeoutError + +from const import BUCKET, BASE_PATH +from exceptions import AuthException, OperationFailed +from logger import error_logger +from miniofile import client, put_object # def get_dtsg_token(cookies): @@ -720,10 +725,6 @@ def _full_screenshot(): def update_windows_distinguish(x=1920, y=1080): """更改windows分辨率""" if sys.platform == "win32": - import win32api - import win32con - import pywintypes - devmode = pywintypes.DEVMODEType() # screenSize = [1280,800] @@ -782,40 +783,45 @@ def parse_cookies(cookies): def check_account_status(page, cookies): + # 检查是否失效 + error_logger.info(f"page Title == {page.title()}") + if page.title() != "Facebook": + raise AuthException('该账号状态已失效', 'invalid') + + # 检查是否冻结 + headers = { + 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', + 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', + 'cache-control': 'max-age=0', + 'dpr': '2', + 'priority': 'u=0, i', + 'referer': 'https://www.facebook.com/', + 'sec-ch-prefers-color-scheme': 'light', + 'sec-ch-ua': '"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"', + 'sec-ch-ua-full-version-list': '"Chromium";v="134.0.6998.89", "Not:A-Brand";v="24.0.0.0", "Google Chrome";v="134.0.6998.89"', + 'sec-ch-ua-mobile': '?0', + 'sec-ch-ua-model': '""', + 'sec-ch-ua-platform': '"macOS"', + 'sec-ch-ua-platform-version': '"15.3.2"', + 'sec-fetch-dest': 'document', + 'sec-fetch-mode': 'navigate', + 'sec-fetch-site': 'same-origin', + 'sec-fetch-user': '?1', + 'upgrade-insecure-requests': '1', + 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36', + 'viewport-width': '743', + } + cookies = {i['name']: i['value'] for i in cookies} + uid = cookies['c_user'] + url = f"https://graph.facebook.com/{uid}/picture?type=normal" + response = requests.get(url, headers=headers, allow_redirects=False) + if response.status_code == 302: + if response.headers.get('Location') == 'https://static.xx.fbcdn.net/rsrc.php/v1/yh/r/C5yt7Cqf3zU.jpg': + raise AuthException('该账号已被冻结', 'frozen') try: _change_language(page) except TimeoutError: - headers = { - 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', - 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8', - 'cache-control': 'max-age=0', - 'dpr': '2', - 'priority': 'u=0, i', - 'referer': 'https://www.facebook.com/', - 'sec-ch-prefers-color-scheme': 'light', - 'sec-ch-ua': '"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"', - 'sec-ch-ua-full-version-list': '"Chromium";v="134.0.6998.89", "Not:A-Brand";v="24.0.0.0", "Google Chrome";v="134.0.6998.89"', - 'sec-ch-ua-mobile': '?0', - 'sec-ch-ua-model': '""', - 'sec-ch-ua-platform': '"macOS"', - 'sec-ch-ua-platform-version': '"15.3.2"', - 'sec-fetch-dest': 'document', - 'sec-fetch-mode': 'navigate', - 'sec-fetch-site': 'same-origin', - 'sec-fetch-user': '?1', - 'upgrade-insecure-requests': '1', - 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36', - 'viewport-width': '743', - } - cookies = {i['name']: i['value'] for i in cookies} - uid = cookies['c_user'] - url = f"https://graph.facebook.com/{uid}/picture?type=normal" - response = requests.get(url, headers=headers, allow_redirects=False) - if response.status_code == 302: - if response.headers.get('Location') == 'https://static.xx.fbcdn.net/rsrc.php/v1/yh/r/C5yt7Cqf3zU.jpg': - raise AuthException('该账号已被冻结', 'frozen') - else: - raise OperationFailed('操作超时或该账户异常,请重试') + raise OperationFailed('操作超时或该账户异常,请重试') class RLock(threading._RLock): @@ -1120,9 +1126,7 @@ def playwright_check_account_cookies(cookies): page = context.new_page() url = 'https://www.facebook.com' page.goto(url) - time.sleep(1) - page.goto(url) - time.sleep(10) + time.sleep(3) check_account_status(page, parse_cookies(cookies)) context.close() browser.close() @@ -1254,8 +1258,8 @@ if __name__ == '__main__': # # lastname='Keals', # # image_key='rg.jpg' # ) - # cookies = '{"datr": "AywLaEqnpuloEMFZFDsT2M_n", "sb": "AywLaHIpk4AHGJP1Fd9c9QFY", "locale": "en_US", "wd": "1920x945", "c_user": "61575694132528", "fr": "0uwYJ79B5B5QtHQlb.AWfITZg5T5P_nadNOxtrCjnArAa3M3q_nhI96McABALXYwpB55A.BoCywD..AAA.0.0.BoCywS.AWdWYvZYad3s8s25sh3-a_oZsxU", "xs": "12%3AJmqcjLatZzjPoQ%3A2%3A1745562643%3A-1%3A-1"}' - # playwright_check_account_cookies(cookies) - cookies = playwright_login('61575694132528', '@Badhon@20', 'LK3UVPADNOEGWIWPBAWWVGDPCMJOZN7M') - print(cookies) + cookies = '{"c_user":"61565823476070","datr":"q13hZowje6bbViFxECQpYyp8","fr":"01C6Lt4VArm5hELvx.AWXg75HOo-QNJgbiDl8qFtw_5lc.Bm4V2r..AAA.0.0.Bm4V25.AWWHzUeMTuI","m_pixel_ratio":"1.875","sb":"q13hZgJARsRIDmNJG8xUauAe","wd":"384x686","xs":"50%3A8luhgQ-Ea0vnhg%3A2%3A1726045627%3A-1%3A-1"}' + playwright_check_account_cookies(cookies) + # cookies = playwright_login('61575694132528', '@Badhon@20', 'LK3UVPADNOEGWIWPBAWWVGDPCMJOZN7M') + # print(cookies) pass