import time from DrissionPage import Chromium, ChromiumOptions class Xhs: def __init__(self, cookies, target='video'): cookies['domain'] = '.xiaohongshu.com' self.cookies = cookies self.url = f'https://creator.xiaohongshu.com/publish/publish?source=official&from=tab_switch&target={target}' self.tab = self.page() def init_co(self): co = ChromiumOptions() # 设置不加载图片、静音 co.incognito(True) co.set_argument('--start-maximized') co.set_pref(arg='profile.default_content_settings.popups', value='0') # 隐藏是否保存密码的提示 co.set_pref('credentials_enable_service', False) co.new_env() return co def upload_data(self, path): ele = self.tab('@class=upload-wrapper') ele.click.to_upload(path) def page(self): co = self.init_co() tab = Chromium(co).latest_tab tab.set.auto_handle_alert() tab.set.cookies(cookies=self.cookies) tab.get(self.url) return tab def input_title_connect(self, title, connect): self.tab.ele('.d-text').input(title) self.tab.ele('.tiptap ProseMirror').input(connect) def send_data(self): for i in range(10): try: html = self.tab.ele('.publish-page-publish-btn', timeout=3).html if 'disabled=""' in html: print('视频上传中等待') time.sleep(2) continue else: break except Exception as e: print(e) self.tab.listen.start('/web_api/sns/v2/note') for i in range(5): try: self.tab.ele('@text()=发布').click() res = self.tab.listen.wait(timeout=3) body = res.response.body return body except Exception as e: print(e) return False def run(self, path=r'D:\2026-3\image\1.mp4'): self.upload_data(path) self.input_title_connect(title='我是标题', connect='我是内容') body = self.send_data() print(body) self.tab.close() if body['success'] is False: return False else: return True if __name__ == '__main__': cookies = { "a1": "197d0c0225d2ahcjv2md8l8lqat171mtu7y0pm97m50000115968", "webId": "f2675311fd5ef2666e15073ef7876bb9", "gid": "yjWf8S8JKJ7qyjWf8S8JJW6j2fJ0xSVhJ6fYvW61Y1A09828yWy69U888yy2jKY8YY0Yjf0i", "x-user-id-ark.xiaohongshu.com": "6861bde9000000001e01790f", "customerClientId": "706990196683713", "x-user-id-fuwu.xiaohongshu.com": "6861bde9000000001e01790f", "abRequestId": "f2675311fd5ef2666e15073ef7876bb9", "web_session": "040069769f151fb684b60b65903b4b342673dc", "id_token": "VjEAAApbUkDez1irEIDK8Xskk9WfmyF6jSocgzGzSSzuhxM1cdthEiup4YdxvB5E6aGLqvdW7DvcwGDBYIbfs0G2mejs1Wf5kYkdDCpD2bFo46Gu3EprnI8se/nm/lE80TPlBClU", "customer-sso-sid": "68c517612540944882532354dbfxgoivhkkgdhc5", "x-user-id-creator.xiaohongshu.com": "5a0457e4db2e6045e3f6d4e0", "access-token-creator.xiaohongshu.com": "customer.creator.AT-68c517612540944882532355njwip1rjvzxfmmyi", "galaxy_creator_session_id": "hMLkZfiS1vCMl6Ls1unn7AdCJN1EQuNkVHCZ", "galaxy.creator.beaker.session.id": "1772432808364005045757", "webBuild": "5.13.1", "acw_tc": "0a0d0eb817726254956234444e57e6308e2dcf480967a5328f30b6f11f5399", "xsecappid": "ugc", "loadts": "1772625495974", "unread": "{%22ub%22:%226982be1e0000000022023e65%22%2C%22ue%22:%226985d2c3000000000a02a602%22%2C%22uc%22:24}", "websectiga": "16f444b9ff5e3d7e258b5f7674489196303a0b160e16647c6c2b4dcb609f4134", "sec_poison_id": "1813469f-a50c-4fde-926e-fd85803ad45b" } # Xhs(cookies=cookies,target='video').run() Xhs(cookies=cookies, target='image').run('1.png')