From b87132e364302be8e38143dff8be4a0afd707fd9 Mon Sep 17 00:00:00 2001 From: JoeanAmier Date: Sat, 29 Jun 2024 10:12:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A1=B9=E7=9B=AE=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E5=BA=93=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 16 ++++++++ README.md | 41 ++++++++++++++++---- locale/en_GB/LC_MESSAGES/xhs.mo | Bin 11909 -> 12059 bytes locale/en_GB/LC_MESSAGES/xhs.po | 8 +++- locale/zh_CN/LC_MESSAGES/xhs.po | 8 +++- main.py | 27 ++++++++----- requirements.txt | 10 ++--- source/CLI/main.py | 6 +++ source/TUI/about.py | 17 +++++++-- source/TUI/app.py | 15 +------- source/TUI/index.py | 36 ++++++++++++++---- source/TUI/monitor.py | 8 +++- source/TUI/record.py | 1 - source/TUI/setting.py | 21 ++++++++-- source/application/app.py | 59 ++++++++++++++++++++++++++++- source/module/__init__.py | 35 +++-------------- source/module/manager.py | 12 +++++- source/module/model.py | 14 +++++++ source/module/settings.py | 4 ++ source/module/static.py | 8 +++- static/screenshot/脚本安装教程.png | Bin 0 -> 43765 bytes static/screenshot/请求头示例图.png | Bin 0 -> 38957 bytes 22 files changed, 257 insertions(+), 89 deletions(-) create mode 100644 Dockerfile create mode 100644 source/module/model.py create mode 100644 static/screenshot/脚本安装教程.png create mode 100644 static/screenshot/请求头示例图.png diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ae933b8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,16 @@ +FROM python:3.12.4-slim + +LABEL name="XHS-Downloader" version="2.1 Beta" authors="JoeanAmier" + +COPY locale /locale +COPY source /source +COPY static /static +COPY LICENSE /LICENSE +COPY main.py /main.py +COPY README.md /README.md +COPY README_EN.md /README_EN.md +COPY requirements.txt /requirements.txt + +RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt + +CMD ["python", "main.py"] diff --git a/README.md b/README.md index 3038328..b5c7c1e 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@
  • ✅ 提取搜索结果作品链接
  • ✅ 提取搜索结果用户链接
  • +

    ⭐ XHS-Downloader 开发计划及进度可前往 Projects 查阅

    📸 程序截图

    🎥 点击图片观看演示视频

    @@ -83,7 +84,8 @@

    启动:运行命令:python .\main.py server

    关闭:按下 Ctrl + C 关闭服务器

    请求接口:/xhs/

    -

    请求类型:POST

    +

    请求方法:POST

    +

    请求格式:JSON

    请求参数:

    @@ -109,8 +111,8 @@ - - + + @@ -124,11 +126,17 @@

    代码示例:

     def api_demo():
    -    server = "http://127.0.0.1:8080"
    +    server = "http://127.0.0.1:8000/xhs/"
         data = {
             "url": "https://www.xiaohongshu.com/explore/123456789",
    +        "download": True,
    +        "index": [
    +            3,
    +            6,
    +            9,
    +        ],
         }
    -    response = requests.post(server, data=data)
    +    response = requests.post(server, json=data)
         print(response.json())
     

    🕹 用户脚本

    @@ -152,6 +160,8 @@ async def example(): work_path = "D:\\" # 作品数据/文件保存根路径,默认值:项目根路径 folder_name = "Download" # 作品文件储存文件夹名称(自动创建),默认值:Download name_format = "作品标题 作品描述" + sec_ch_ua = "" # 请求头 Sec-Ch-Ua + sec_ch_ua_platform = "" # 请求头 Sec-Ch-Ua-Platform user_agent = "" # User-Agent cookie = "" # 小红书网页版 Cookie,无需登录,必需参数,登录状态对数据采集有影响 proxy = None # 网络代理 @@ -166,6 +176,8 @@ async def example(): async with XHS(work_path=work_path, folder_name=folder_name, name_format=name_format, + sec_ch_ua=sec_ch_ua, + sec_ch_ua_platform=sec_ch_ua_platform, user_agent=user_agent, cookie=cookie, proxy=proxy, @@ -216,10 +228,22 @@ async def example(): + + + + + + + + + + + + - - + + @@ -295,6 +319,8 @@ async def example():
    indexstr下载指定序号的图片文件,仅对图文作品生效;多个序号之间使用空格分隔;download 参数设置为 false 时不生效list[int]下载指定序号的图片文件,仅对图文作品生效;download 参数设置为 false 时不生效 null
    发布时间 作者昵称 作品标题
    sec_ch_uastr浏览器请求头 Sec-Ch-Ua内置 Chrome Sec-Ch-Ua
    sec_ch_ua_platformstr浏览器请求头 Sec-Ch-Ua-Platform内置 Chrome Sec-Ch-Ua-Platform
    user_agent str浏览器 User-Agent内置 chrome user-agent浏览器 User Agent内置 Chrome User Agent
    cookie
    +

    其他说明:sec_ch_uasec_ch_ua_platformuser_agent参数获取示例,仅当程序获取数据失败时需要自行设置!

    +

    🌐 Cookie

    1. 打开浏览器(可选无痕模式启动),访问 https://www.xiaohongshu.com/explore
    2. @@ -361,6 +387,7 @@ async def example(): * https://github.com/encode/httpx/ * https://github.com/tiangolo/fastapi +* https://github.com/textualize/textual/ * https://textual.textualize.io/ * https://aiosqlite.omnilib.dev/en/stable/ * https://click.palletsprojects.com/en/8.1.x/ diff --git a/locale/en_GB/LC_MESSAGES/xhs.mo b/locale/en_GB/LC_MESSAGES/xhs.mo index 398ddee3dd02ceb2e0509bf8721f9418c3270bb0..778195781c39e5b7fb649732ecbda66832be568e 100644 GIT binary patch delta 2181 zcmZ|Pe@vBC9LMo*30&l&0{+0%;Ne;(2?FJhNF}eBVWcSv6e^PtCYwTBY5mt-%pd(z zTLxqP{=+|VQ(W#^{gJ==vAH>i+N!P1G2LXj+;rL2Vngfwd7g9cA8noO`@GJ1?(>}I zobNg3?%8svIX;}1)^C(%Viu7-&Mb~&>0Bs(hs>VFQD=Up*%I0daT<1G1V3`^lUPLi zJ8Z=}xE5>1o6W=loP-JdU7z}%iau~U%Pb$SI`3c!?J;L@*larO27Cs)P#@}Z_rF4Y z;F|LuX44LFnSfJp4n|PlS&g2i+CoJg_u^DMN9&b?TmRDVlF1Gt6sZKJ4}WRNEr!7{8ueW(*P^UtsyzeK$^ zD<_y)F+N8-ij~-b>i;qCH4`W;%j#1It7v%;IR-rmbb0`bUL6lzzGpf*b;TfGiF zoPoRWS^Nam@mZXY*Kr^IgIjSQFYEWa$U(3)MwRmf8xqw|L7W|;wWvhiu|`x!ov2J4 zL8WX6HRJpEJWk_nsuo4YXq!-*tQ(cFgLs`U4&p-EAIuJ(KZ}~!5b~47|8PHKv#`1` z2h~9oHS&$P7~e&G=mb{b1>{wGgj=zQbZ9`msEHg#Em;CeSlo_M zVL9yrF2EmAFNT=zTUd#!a6jt)uh@=ZrmHoKp*CqRDs#s$ibGg}ImN-imN^?y1MkL} zI{*Dtn1r3dT>J&KBzIApGlP87m(4{DbUi-CHspxgHg=%ii(w}2Mh=vHjQag3D&?n8 zAHIef*q>Oz_syfFl-8kA{wb=%L0p6vQET`YGA1kG2&}*c=K<7`-9!!e0cKz>=_tVI zr~xfT^;?5qU=zlb!f=@xo6?pMnrX7IWcDIK#{CpOi6LSop;N*8sq!{8kEn2WG*g|V z<-|Hd<@EsDgs%_`M)MCw`=(zDX5gwRG`m{YdLwl=$d;Pb1j+ILUYk&}-a=@@k!71m zj3bgo8@1AJ@O^EvaPk+_+AF=~L>-|uSNdxRGV3o@8fqz2B7{yxval`uGM?*NSJwts zSwm7J$Wl7@a&^u{W8`@e+tGAcdx7f(uJ-?kl?Nx7&b?t2PQuj;O s?P%#~?~3jG&jax$i&;R`LTi^5g{r;!_@Av)P&Z%|PYlH6-qw9>ah8RHn zi8KphTNgekue+HI#5c}gm`mI5GwX{>a42qe?L#<(_F1gN7A(R*j9Ciq!k$=*Uo_M? zDjMKutXUFXb++Ib+HKC5IJ17Vvv4>TqXydHo}WYw(CB=I@w7iV?siBfCZ@cDp4z3jq2|l zYO9}MP??0NsKXBTMO?4&i~^_^@{qo*5?gUQYDIGS(DNeH`|F%roV#%_&#N&NFQ5{7 z>}*eD{m1bjws$z=T;w||!|}KYGq4^t!&V%P-!ThQ`h*iGMNMQqDv`aY6+PhE=TV8? z!2Q_lo)`LA|EWA!$_DBbA4V-{BbH(-CSx*3Jq;(LIxfetxC?9WB39s7Ue@==kb`em zFd@S17OI~|WT~zAfV^TIT7Pxq=j3Q5W}}v@3N_<89EJCgKWpcMoGg;wbjbRlRxBT1 zGGZA{rkyq{JYYHMy`8Ro9QFTKP>BZbQ<*~LEvn;0Hargl$Rpc?6?h2M(N|RFU0Duo z(Lh{?#W)8~p|06S)I@wV*ewg-B%FqNZyT=k?mv}69{h1%%wpObX;-24tPOQqzoJ$u zhH2;HR2+kQP>Ee~Hlq@MhnnGEBxg%WH{;yeOw<;X;t<{ctyK6QJAumd4tC%Rs=p-uDU0zfor?CX0vXdz zVgWvIMsWqSXN9QivkJT7UepiDK2$;tsE%*qb!88T5X(S>*pkKlwpr$W~by z5lM6-G&l#=n+14f1)mx$Gu-qN$)c{A6}e~goU3p;p=4B)>|(DLJ`=7gH2?7I=6f}> z1x}&m>MX3bcU3tw-hP(jEJ7>RgNPzJi_U`%waRiLj?nE=(H6}lbe2jqzV>_~QAn^g zHjRiTIB#A_=0.47.1 -pyperclip>=1.8.2 -lxml>=5.1.0 +textual>=0.70.0 +pyperclip>=1.9.0 +lxml>=5.2.2 PyYAML>=6.0.1 aiosqlite>=0.20.0 click>=8.1.7 browser_cookie3>=0.19.1 httpx>=0.27.0 -fastapi>=0.110.0 -uvicorn>=0.24.0 +fastapi>=0.111.0 +uvicorn>=0.30.1 diff --git a/source/CLI/main.py b/source/CLI/main.py index 4bb5e5c..55566b2 100644 --- a/source/CLI/main.py +++ b/source/CLI/main.py @@ -123,6 +123,9 @@ class CLI: ("--work_path", "-wp", "str", _("作品数据 / 文件保存根路径")), ("--folder_name", "-fn", "str", _("作品文件储存文件夹名称")), ("--name_format", "-nf", "str", _("作品文件名称格式")), + ("--sec_ch_ua", "-su", "str", _("Sec-Ch-Ua")), + ("--sec_ch_ua_platform", "-sp", "str", _("User-Agent")), + ("--user_agent", "-ua", "str", _("Sec-Ch-Ua-Platform")), ("--cookie", "-ck", "str", _("小红书网页版 Cookie,无需登录")), ("--proxy", "-p", "str", _("网络代理")), ("--timeout", "-t", "int", _("请求数据超时限制,单位:秒")), @@ -163,6 +166,9 @@ class CLI: ) @option("--folder_name", "-fn", ) @option("--name_format", "-nf", ) +@option("--sec_ch_ua", "-su", ) +@option("--sec_ch_ua_platform", "-sp", ) +@option("--user_agent", "-ua", ) @option("--cookie", "-ck", ) @option("--proxy", "-p", ) @option("--timeout", "-t", type=int, ) diff --git a/source/TUI/about.py b/source/TUI/about.py index 38a6457..9b7b66b 100644 --- a/source/TUI/about.py +++ b/source/TUI/about.py @@ -21,15 +21,15 @@ __all__ = ["About"] class About(Screen): BINDINGS = [ Binding( - key="q", + key="Q", action="quit", description="退出程序/Quit"), Binding( - key="u", - action="check_update_about", + key="U", + action="check_update", description="检查更新/Update"), Binding( - key="b", + key="B", action="index", description="返回首页/Back"), ] @@ -53,3 +53,12 @@ class About(Screen): def on_mount(self) -> None: self.title = PROJECT + + async def action_quit(self) -> None: + await self.app.action_quit() + + async def action_index(self): + await self.app.push_screen("index") + + async def action_check_update(self): + await self.app.run_action("update_and_return") diff --git a/source/TUI/app.py b/source/TUI/app.py index 6de0422..d2c4315 100644 --- a/source/TUI/app.py +++ b/source/TUI/app.py @@ -14,7 +14,6 @@ from source.module import logging from .about import About from .index import Index from .loading import Loading -from .monitor import Monitor from .record import Record from .setting import Setting from .update import Update @@ -78,15 +77,6 @@ class XHSDownloader(App): await self.push_screen("setting", save_settings) - async def action_about(self): - await self.push_screen("about") - - async def action_index(self): - await self.push_screen("index") - - async def action_record(self): - await self.push_screen("record") - async def refresh_screen(self): self.pop_screen() await self.close_database() @@ -117,13 +107,10 @@ class XHSDownloader(App): async def action_check_update(self): await self.push_screen(Update(self.APP, self.message), callback=self.update_result) - async def action_check_update_about(self): + async def action_update_and_return(self): await self.push_screen("index") await self.action_check_update() - async def action_monitor(self): - await self.push_screen(Monitor(self.APP, self.message)) - async def close_database(self): await self.APP.id_recorder.cursor.close() await self.APP.id_recorder.database.close() diff --git a/source/TUI/index.py b/source/TUI/index.py index 1168bcf..aab15ce 100644 --- a/source/TUI/index.py +++ b/source/TUI/index.py @@ -27,18 +27,19 @@ from source.module import ( REPOSITORY, GENERAL, ) +from .monitor import Monitor __all__ = ["Index"] class Index(Screen): BINDINGS = [ - Binding(key="q", action="quit", description="退出程序/Quit"), - Binding(key="u", action="check_update", description="检查更新/Update"), - Binding(key="s", action="settings", description="程序设置/Settings"), - Binding(key="r", action="record", description="下载记录/Record"), - Binding(key="m", action="monitor", description="开启监听/Monitor"), - Binding(key="a", action="about", description="关于项目/About"), + Binding(key="Q", action="quit", description="退出程序/Quit"), + Binding(key="U", action="update", description="检查更新/Update"), + Binding(key="S", action="settings", description="程序设置/Settings"), + Binding(key="R", action="record", description="下载记录/Record"), + Binding(key="M", action="monitor", description="开启监听/Monitor"), + Binding(key="A", action="about", description="关于项目/About"), ] def __init__(self, app: XHS, message: Callable[[str], str]): @@ -73,7 +74,7 @@ class Index(Screen): Button(self.message("清空输入框"), id="reset"), ), ) - yield RichLog(markup=True, wrap=True) + yield RichLog(markup=True, ) yield Footer() def on_mount(self) -> None: @@ -86,7 +87,8 @@ class Index(Screen): f"\n{ ">" * 50}", - style=MASTER), scroll_end=False) + style=MASTER), scroll_end=False, + ) self.xhs.manager.print_proxy_tip(log=self.tip, ) @on(Button.Pressed, "#deal") @@ -114,3 +116,21 @@ class Index(Screen): self.tip.write(Text(self.message("下载小红书作品文件失败"), style=ERROR)) self.tip.write(Text(">" * 50, style=GENERAL)) self.app.pop_screen() + + async def action_quit(self) -> None: + await self.app.action_quit() + + async def action_update(self) -> None: + await self.app.run_action("check_update") + + async def action_settings(self): + await self.app.run_action("settings") + + async def action_monitor(self): + await self.app.push_screen(Monitor(self.xhs, self.message)) + + async def action_about(self): + await self.app.push_screen("about") + + async def action_record(self): + await self.app.push_screen("record") diff --git a/source/TUI/monitor.py b/source/TUI/monitor.py index 14bd698..5356b12 100644 --- a/source/TUI/monitor.py +++ b/source/TUI/monitor.py @@ -24,8 +24,8 @@ __all__ = ["Monitor"] class Monitor(Screen): BINDINGS = [ - Binding(key="q", action="quit", description="退出程序/Quit"), - Binding(key="c", action="close", description="关闭监听/Close"), + Binding(key="Q", action="quit", description="退出程序/Quit"), + Binding(key="C", action="close", description="关闭监听/Close"), ] def __init__(self, app: XHS, message: Callable[[str], str]): @@ -60,3 +60,7 @@ class Monitor(Screen): def action_close(self): self.xhs.stop_monitor() self.app.pop_screen() + + async def action_quit(self) -> None: + self.action_close() + await self.app.action_quit() diff --git a/source/TUI/record.py b/source/TUI/record.py index 86002c5..0db7f08 100644 --- a/source/TUI/record.py +++ b/source/TUI/record.py @@ -15,7 +15,6 @@ __all__ = ["Record"] class Record(ModalScreen): - def __init__(self, app: XHS, message: Callable[[str], str]): super().__init__() self.xhs = app diff --git a/source/TUI/setting.py b/source/TUI/setting.py index f95e451..1e1da44 100644 --- a/source/TUI/setting.py +++ b/source/TUI/setting.py @@ -19,8 +19,8 @@ __all__ = ["Setting"] class Setting(Screen): BINDINGS = [ - Binding(key="q", action="quit", description="退出程序/Quit"), - Binding(key="b", action="index", description="返回首页/Back"), + Binding(key="Q", action="quit", description="退出程序/Quit"), + Binding(key="B", action="index", description="返回首页/Back"), ] def __init__(self, data: dict, message: Callable[[str], str]): @@ -39,8 +39,15 @@ class Setting(Screen): Label(self.message("作品文件名称格式"), classes="params", ), Input(self.data["name_format"], placeholder=self.message("发布时间 作者昵称 作品标题"), valid_empty=True, id="name_format", ), + Label(self.message("Sec-Ch-Ua"), classes="params", ), + Input(self.data["sec_ch_ua"], placeholder=self.message("内置 Chrome Sec-Ch-Ua"), valid_empty=True, + id="sec_ch_ua", ), + Label(self.message("Sec-Ch-Ua-Platform"), classes="params", ), + Input(self.data["sec_ch_ua_platform"], placeholder=self.message("内置 Chrome Sec-Ch-Ua-Platform"), + valid_empty=True, + id="sec_ch_ua_platform", ), Label(self.message("User-Agent"), classes="params", ), - Input(self.data["user_agent"], placeholder=self.message("内置 Chrome User-Agent"), valid_empty=True, + Input(self.data["user_agent"], placeholder=self.message("内置 Chrome User Agent"), valid_empty=True, id="user_agent", ), Label(self.message("小红书网页版 Cookie"), classes="params", ), Input(placeholder=self.__check_cookie(), valid_empty=True, id="cookie", ), @@ -101,6 +108,8 @@ class Setting(Screen): "work_path": self.query_one("#work_path").value, "folder_name": self.query_one("#folder_name").value, "name_format": self.query_one("#name_format").value, + "sec_ch_ua": self.query_one("#sec_ch_ua").value, + "sec_ch_ua_platform": self.query_one("#sec_ch_ua_platform").value, "user_agent": self.query_one("#user_agent").value, "cookie": self.query_one("#cookie").value or self.data["cookie"], "proxy": self.query_one("#proxy").value or None, @@ -120,3 +129,9 @@ class Setting(Screen): @on(Button.Pressed, "#abandon") def reset(self): self.dismiss(self.data) + + async def action_quit(self) -> None: + await self.app.action_quit() + + async def action_index(self): + await self.app.push_screen("index") diff --git a/source/application/app.py b/source/application/app.py index 55256c7..f8f5995 100644 --- a/source/application/app.py +++ b/source/application/app.py @@ -1,4 +1,3 @@ -# from asyncio import CancelledError from asyncio import Event from asyncio import Queue from asyncio import QueueEmpty @@ -10,13 +9,19 @@ from re import compile from typing import Callable from urllib.parse import urlparse +from fastapi import FastAPI +from fastapi.responses import RedirectResponse # from aiohttp import web from pyperclip import paste +from uvicorn import Config +from uvicorn import Server from source.expansion import BrowserCookie from source.expansion import Converter from source.expansion import Namespace from source.module import DataRecorder +from source.module import ExtractData +from source.module import ExtractParams from source.module import IDRecorder from source.module import Manager from source.module import ( @@ -24,7 +29,9 @@ from source.module import ( ERROR, WARNING, MASTER, - # REPOSITORY, + REPOSITORY, + VERSION_MAJOR, + VERSION_MINOR, ) from source.module import Translate from source.module import logging @@ -53,6 +60,8 @@ class XHS: work_path="", folder_name="Download", name_format="发布时间 作者昵称 作品标题", + sec_ch_ua: str = "", + sec_ch_ua_platform: str = "", user_agent: str = None, cookie: str = None, proxy: str | dict = None, @@ -80,6 +89,8 @@ class XHS: folder_name, name_format, chunk, + sec_ch_ua, + sec_ch_ua_platform, user_agent, self.read_browser_cookie(read_cookie) or cookie, proxy, @@ -108,6 +119,7 @@ class XHS: self.event = Event() # self.runner = self.init_server() # self.site = None + self.server = None def __extract_image(self, container: dict, data: Namespace): container["下载地址"], container["动图地址"] = self.image.get_image_link( @@ -339,3 +351,46 @@ class XHS: # async def close_server(self, log=None, ): # await self.runner.cleanup() # logging(log, self.message("Web API 服务器已关闭!")) + + async def run_server(self, host="127.0.0.1", port=8000, log_level="info", ): + self.server = FastAPI( + title="XHS-Downloader", + version=f"{VERSION_MAJOR}.{VERSION_MINOR}") + self.setup_routes() + config = Config( + self.server, + host=host, + port=port, + log_level=log_level, + ) + server = Server(config) + await server.serve() + + def setup_routes(self): + @self.server.get("/") + async def index(): + return RedirectResponse(url=REPOSITORY) + + @self.server.post("/xhs/", response_model=ExtractData, ) + async def handle(extract: ExtractParams): + url = await self.__extract_links(extract.url, None) + if not url: + msg = self.message("提取小红书作品链接失败") + data = None + else: + if data := await self.__deal_extract( + url[0], + extract.download, + extract.index, + None, + None, + not extract.skip, + ): + msg = self.message("获取小红书作品数据成功") + else: + msg = self.message("获取小红书作品数据失败") + data = None + return ExtractData( + message=msg, + url=url[0] if url else extract.url, + data=data) diff --git a/source/module/__init__.py b/source/module/__init__.py index 74793c6..db29e74 100644 --- a/source/module/__init__.py +++ b/source/module/__init__.py @@ -1,5 +1,9 @@ from .extend import Account from .manager import Manager +from .model import ( + ExtractData, + ExtractParams, +) from .recorder import DataRecorder from .recorder import IDRecorder from .settings import Settings @@ -22,38 +26,11 @@ from .static import ( HEADERS, PROJECT, USERAGENT, + SEC_CH_UA, + SEC_CH_UA_PLATFORM, ) from .tools import ( retry, logging, ) from .translator import Translate - -__all__ = [ - "Account", - "Settings", - "IDRecorder", - "Manager", - "VERSION_MAJOR", - "VERSION_MINOR", - "VERSION_BETA", - "ROOT", - "REPOSITORY", - "LICENCE", - "RELEASES", - "MASTER", - "PROMPT", - "GENERAL", - "PROGRESS", - "ERROR", - "WARNING", - "INFO", - "USERSCRIPT", - "HEADERS", - "retry", - "logging", - "PROJECT", - "Translate", - "DataRecorder", - "USERAGENT", -] diff --git a/source/module/manager.py b/source/module/manager.py index 80b4ecd..b1816c4 100644 --- a/source/module/manager.py +++ b/source/module/manager.py @@ -11,6 +11,8 @@ from httpx import TimeoutException from httpx import get from .static import HEADERS +from .static import SEC_CH_UA +from .static import SEC_CH_UA_PLATFORM from .static import USERAGENT from .static import WARNING from .tools import logging @@ -48,6 +50,8 @@ class Manager: folder: str, name_format: str, chunk: int, + sec_ch_ua: str, + sec_ch_ua_platform: str, user_agent: str, cookie: str, proxy: str | dict, @@ -68,7 +72,11 @@ class Manager: self.path = self.__check_path(path) self.folder = self.__check_folder(folder) self.message = transition - self.blank_headers = HEADERS | {"User-Agent": user_agent or USERAGENT} + self.blank_headers = HEADERS | { + "User-Agent": user_agent or USERAGENT, + "Sec-Ch-Ua": sec_ch_ua or SEC_CH_UA, + "Sec-Ch-Ua-Platform": sec_ch_ua_platform or SEC_CH_UA_PLATFORM, + } self.headers = self.blank_headers | {"Cookie": cookie} self.retry = retry self.chunk = chunk @@ -83,11 +91,13 @@ class Manager: headers=self.headers | { "Referer": "https://www.xiaohongshu.com/explore", }, timeout=timeout, + verify=False, **self.proxy, ) self.download_client = AsyncClient( headers=self.blank_headers, timeout=timeout, + verify=False, **self.proxy, ) self.image_download = self.check_bool(image_download, True) diff --git a/source/module/model.py b/source/module/model.py new file mode 100644 index 0000000..c404990 --- /dev/null +++ b/source/module/model.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel + + +class ExtractParams(BaseModel): + url: str + download: bool = False + index: list = None + skip: bool = False + + +class ExtractData(BaseModel): + message: str + url: str + data: dict | None diff --git a/source/module/settings.py b/source/module/settings.py index 34cb5f0..0f20d3e 100644 --- a/source/module/settings.py +++ b/source/module/settings.py @@ -4,6 +4,8 @@ from pathlib import Path from platform import system from .static import ROOT +from .static import SEC_CH_UA +from .static import SEC_CH_UA_PLATFORM from .static import USERAGENT __all__ = ['Settings'] @@ -14,6 +16,8 @@ class Settings: "work_path": "", "folder_name": "Download", "name_format": "发布时间 作者昵称 作品标题", + "sec_ch_ua": SEC_CH_UA, + "sec_ch_ua_platform": SEC_CH_UA_PLATFORM, "user_agent": USERAGENT, "cookie": "", "proxy": None, diff --git a/source/module/static.py b/source/module/static.py index 8b473c0..c2d0903 100644 --- a/source/module/static.py +++ b/source/module/static.py @@ -19,6 +19,8 @@ __all__ = [ "HEADERS", "PROJECT", "USERAGENT", + "SEC_CH_UA", + "SEC_CH_UA_PLATFORM", ] VERSION_MAJOR = 2 @@ -37,6 +39,8 @@ USERSCRIPT = "https://raw.githubusercontent.com/JoeanAmier/XHS-Downloader/master USERAGENT = ( "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 " "Safari/537.36") +SEC_CH_UA = "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Google Chrome\";v=\"126\"" +SEC_CH_UA_PLATFORM = "\"Windows\"" HEADERS = { "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8," @@ -46,9 +50,9 @@ HEADERS = { "Cookie": "", "Dnt": "1", # "Priority": "u=0, i", - # "Sec-Ch-Ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Google Chrome\";v=\"126\"", + "Sec-Ch-Ua": SEC_CH_UA, "Sec-Ch-Ua-Mobile": "?0", - # "Sec-Ch-Ua-Platform": "\"Windows\"", + "Sec-Ch-Ua-Platform": SEC_CH_UA_PLATFORM, "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "none", diff --git a/static/screenshot/脚本安装教程.png b/static/screenshot/脚本安装教程.png new file mode 100644 index 0000000000000000000000000000000000000000..495a9c0adc4fead11abd71ae2cb7d01e2a5d3b54 GIT binary patch literal 43765 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 literal 0 HcmV?d00001 diff --git a/static/screenshot/请求头示例图.png b/static/screenshot/请求头示例图.png new file mode 100644 index 0000000000000000000000000000000000000000..9ac93e85163f92d4a858cb84269556b83b2e4050 GIT binary patch literal 38957 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 wz5w?2N*~_<@RqAX2qA