candy 发表于 3 天前

让我们实现Manus邀请码自由(内含200个激活码)

受到关于Manus邀请码的无限自我裂变这篇帖子的启发
做了个全自动注册机。由于技术太菜,不会过盾,因此使用capsolver进行过盾(非推广)

使用方法:
在文件前面部分(如图)

输入你的capsolver api密钥 代理ip 以及初始邀请码(从1到n无限裂变,实现邀请码自由)
会自动输出注册过的账号到accounts.txt
会输出所有产出的邀请码到inviteCodes.txt(包含过程中被使用的)
引用到的包:
capsolver
requests

完整代码
import time
import requests
import capsolver
import random
import threading

# ===================================配置信息===================================
capsolver.api_key = "" # capsolver密钥
useProxy = "" # 代理ip
initInviteCode = "" # 初始邀请码
password = "lksdnvsdopgjeoqwf." # 密码
# ===================================配置信息===================================
if useProxy == "":
    proxy = None
else:
    proxy = {
      "http": useProxy,
      "https": useProxy
    }

def cf_bypass():
    solution = capsolver.solve({
      "type": "AntiTurnstileTaskProxyLess",
      "websiteURL": "https://manus.im/login",
      "websiteKey": "0x4AAAAAAA_sd0eRNCinWBgU",
      "metadata": {
            "type": "signUp"
      }
    })
    print(solution)
    return solution['token']

def send_email(email):
    resp = requests.post("https://api.manus.im/api/user/send_email_verify_code_with_captcha", json={
      "email": email,
      "action": "register",
      "captcha_pass_token": {
            "cf_challenge_response": cf_bypass()
      }
    }, proxies=proxy, headers={
      "Content-Type": "application/json",
      "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
      "origin": "https://manus.im",
      "referer": "https://manus.im"
    })
    return resp.json()['code']

def register(email, password, code):
    resp = requests.post("https://api.manus.im/api/user/register_by_email", json={
      "email": email,
      "password": password,
      "verify_code": code,
      "first_from_platform": "web",
      "locale": "zh-CN",
      "name": "xxx"
    }, proxies=proxy, headers={
      "Content-Type": "application/json",
      "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
      "origin": "https://manus.im",
      "referer": "https://manus.im"
    })
    if resp.json()['code'] == 0:
      return resp.cookies['session_id']
    return ""

def check_invitation(at, code):
    resp = requests.post("https://api.manus.im/user.v1.UserService/CheckInvitationCode", json={
      "code": code
    }, headers={
      'Host': 'api.manus.im',
      'x-client-locale': 'zh-CN',
      'sec-ch-ua-platform': '"macOS"',
      'authorization': f'Bearer {at}',
      'sec-ch-ua': '"Google Chrome";v="135", "Not-A.Brand";v="8", "Chromium";v="135"',
      'sec-ch-ua-mobile': '?0',
      'connect-protocol-version': '1',
      'x-client-dcr': 'hbM4BVL9Ln4yhpoveJHyQV7zLFkQBZQseqUyf5j0LHoxgJYvLH4kBbESXbEBLGHzAcH4AcfsLHIzfJaoY5YlV5o3OcXcQb7cQlDrV3kXWXzvLJasd5XjU5Ymd51sLHQrfp2wCV1aPcXxPF7zOmDjX5IpBAMsOcXcQb7cQlLvLpayB5IvCVL9LqsrOXQRLlzleJIxC6YkC5YcLmseLqsrOXQRLo3vLqUseZY9e58oLmrlTAQsBV2WdJIxC5kkdVLvLqQmfpYoelL9hbM6dZU3dFL9PmD4QlzldJYsC5k3LmraPcL8iVzlgpoog6EyfqTlRqvlg5ongJjlRmLzQWBvLpkodZgrgFL9PWH8RK3vLqUseZY9e58oW5Cpf5Y3LmrwQGjziT==',
      'x-client-type': 'web',
      'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36',
      'content-type': 'application/json',
      'x-client-id': 'sADl8cGSN4FqRINFYY1jWj',
      'accept': '*/*',
      'origin': 'https://manus.im',
      'sec-fetch-site': 'same-site',
      'sec-fetch-mode': 'cors',
      'sec-fetch-dest': 'empty',
      'referer': 'https://manus.im/',
      'accept-language': 'zh-CN,zh;q=0.9',
      'priority': 'u=1, i'
    }, proxies=proxy)

def get_invitation(at):
    resp = requests.post("https://api.manus.im/user.v1.UserService/GetPersonalInvitationCodes", json={}, headers={
      "Authorization": f"Bearer {at}",
      "Content-Type": "application/json",
      "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
      "origin": "https://manus.im",
      "referer": "https://manus.im"
    }, proxies=proxy)
    print(resp.json())
    return resp.json()

def get_sid(email):
    name = email.split('@')
    resp = requests.post('https://www.guerrillamail.com/ajax.php?f=set_email_user',
                         data=f"email_user={name}&lang=zh&site=guerrillamail.com&in=+%E8%AE%BE%E7%BD%AE+%E5%8F%96%E6%B6%88",
                         headers={
                           'authorization': 'ApiToken 8aaee4521214aaf20bad7d9bb6c97b3f31130a02a1f9ea0509ba905ec6db318e',
                           'origin': 'https://www.guerrillamail.com',
                           'referer': 'https://www.guerrillamail.com/zh/inbox',
                           'content-type': 'application/x-www-form-urlencoded; charset=UTF-8'
                         }).json()
    return resp['sid_token']

def get_mail_box(sid):
    resp = requests.get('https://www.guerrillamail.com/ajax.php?f=check_email&seq=176044396&site=guerrillamail.com&in=test&_=1740328165890', cookies={
      'PHPSESSID': sid
    }).json()
    for row in resp['list']:
      if row['mail_from'] == 'noreply@mail.manus.im':
            return get_mail_detail(sid, row['mail_id'])

def get_mail_detail(sid, mid):
    resp = requests.get(f'https://www.guerrillamail.com/ajax.php?f=fetch_email&email_id=mr_{mid}&site=guerrillamail.com&in=test&_=1740328165951', cookies={
      'PHPSESSID': sid
    }).json()
    return resp['mail_body'].split('<span style="font-size:24px;font-family:Inter, Arial, sans-serif;font-weight:600;color:#262626;line-height:150%;">').split('\n')

def work(inviteCode):
    email = random.sample('abcdefghijklmnopqrstuvwxyz', 16)
    email = ''.join(email)
    email += "@grr.la"
    print(inviteCode, "邮箱:", email)
    if send_email(email) == 0:
      print(inviteCode, "发送验证码成功")
    else:
      print(inviteCode, "发送验证码失败")
      return

    sid = get_sid(email)
    while (1):
      try:
            time.sleep(1)
            code = get_mail_box(sid)
            if code is None:
                continue
            break
      except:
            pass
    at = register(email, password, code) # 注册
    with open("accounts.txt", 'a') as f:
      f.write(f"{email}----{password}\n")
    print(inviteCode, "注册成功")
    print(inviteCode, at)
    check_invitation(at, inviteCode) # 检查邀请码
    codes = get_invitation(at) # 获取邀请码
    for row in codes['invitationCodes']:
      print("邀请码", row['inviteCode'])
      with open("inviteCodes.txt", 'a') as f:
            f.write(f"{row['inviteCode']}\n")
      threading.Thread(target=work, args=(row['inviteCode'],)).start()
      time.sleep(1)

if __name__ == "__main__":
    work(initInviteCode)
    time.sleep(9999999)

同时考虑到有部分佬没有激活码,特此附上200条可用激活码
TZAIIU22H3ISI
EWW4RUE0LK6KSN2
YNDM35HW5XWBD1U
0ZCHVBNYWJFAWVL
IUOSRUM9ZSUVY
VA3O2QRH3YOE
LG4RLS1L47EOAPR
UUAIGMBN9KI58ZP
BH6H3ARNZMCTI
REHCPFVV9RKFNE
IHXUFDCS1CUOTS3
ENCBALMGI0LCV
WG7IR1AAZSWZCQ
HXRLB4NSICQCKR
7EFBDOVIZ1HL
V1OMPEVAXHNI
WJAMNARK53PKG
8FZAK3B3QQST
7VRHG01HZ1L74ZJ
PIAXLG0KRIOR
QVRKY4QGMN7PQ
9ED3XSGTDNDZEEI
BVUM5OYWBTR0C9G
PXVSGM4ZI8AI
LT9UXMEZXY3F8
DRJM2STCCUZUMUC
BRG7TQBMDDYA
NDKTZP90AHCS
JEFF0RW2QXWGOX7
MX3OHZKYYZO1
SCGH6VSC7CO7
Y4OIOS8G2EY2FIK
SL91UC8CM7QF0R
6LNLUP7SDWMA
RXVAQXPQYKS6
P7MZRTSHFCUQ
SCNEYZCM2LV7
DPIJEXNQFGRBAZ
ATSUW40ZSJIVQ
OWKZ1AJX7VCIVTD
25WWYMUVHCBGT
EJLOAWT3UVEUNL
EUEFPB1GNAWVAOV
RM5TIB4WISOMAJX
XKDSNSB7B6WB
YRL2LLGAIQDHQI
34J5NWWONRDRAD
PB0DMPZFY1TG
UXMZGY8B8CDCRD
ZG1FQUKDBKDUQC
UXLDU9OWPK15LWG
5AOM8AGQ2MZT6K
XFCAFMWMH9ZELL
82VIHWQT8HYO5
TQNGTFEBKEAA
CPX0MEONXUIJYA
V5YSWCKTSRJEAU
CRHBFGUJ1NW0Y
WRSURA5DBD4Y
SFGNI4VIFLM3N
VCXHD78AW3KX
ROVP2FSUWHNAGA
HH0YPZX3O3E0RQ
FVDM58NKHQMK
SQ35L8Y5VN4E4
KYHDOZ5EW2Z8R
CRW2XMNAHXH21K5
ZI65HMYRNIWNLT
PHNZF3VYV9F0850
UHSZGSPFRSW3UM
ZPYY2UFPF70CT
RPPYYCZCN2ZXA
SG4B7NXNMMCBGO7
XVRXFZTMXJSMMT
WVPYND5PQFNBC9
YDPQAP7DPLHD8S2
8WGDCIGLI4CCWXW
SZGASPDEFTODGEH
2LDSSBFE8VPE3
XDOJEF6GWSSXL
C8LHN2OQYLP995V
UO8WJFTIOB7UI
MLAVJFANEZJRD0B
UTIU0IG3GVEH
I1N0YIRESMQVIL
YFUXOFM3BAO5
CSL5KT1A5RVTSN
EM0MMRV3XO43TMV
8Y7W3UTBDIZ6M0H
TIDHXZXAD2LIS
VNY7WUUNT3XFVF
DPIV5HTKZ0UOQ5K
N16TDQJ2VRSZPU
76627NII0ZP5G
4ZP45ZZCMCKC
TBNCFXVFUMZUCV
WRBL8RLDKTMDK
91NYLXHLKAAJL
ERBA6A5EXCWY1JN
MPBQZBFMKENN
5ZXBXQQE52ZFG6
IJTNIMF4USOJQFJ
8KPAR4MLFINB
C1Q1ZQJ439IHUM
S70UXXGSONFI
UGZKGDRCW7TKBCP
QDISB3D9ONYYDX
9LNROP7MAB47CC
E48UTWW1XXCX
ZIXMEV2DCYF8A
EZJHIAQ7PAZIE
LJLMNOQ8Q9IFXG
QSHD9XRAVZISDJN
XBCS0W6DKYCHVCL
0INCPXDIA2G0
LJITAED5LCGYNV
TTMVU60IYOVDLL5
OVOJBTX53B18GR
LIBDROFTL65TABE
LQQUFBIDBBYDTE
3X7KUJVVAJOP6
YUWDLUCBUVRUNRT
PGNXWTRPBBFE5
3GLEQOZUWBU6Y
YWN1UCZLBMLK
BL89UGXKQ1HBK
YRLLOBOZTH2JS
6VCAYEOUKB0RX
DKQDYZNZICAP1UL
BXKAQFMMHRCCV
GX4Q2J6XGMHZY
KYIKTSJ6ITRXS
KILEEZZBJCZXA
XRQLQN2C87JUNYF
QLOMVKJWMWHD
VFOC0W7ULJSD5U
4IMANT5OARY74
ZYG8KWP5O5OCOEI
BVUJ4DH5FJOWZVV
MCZQDJBESVXZONN
FSFZCP60DLULCF
QNQTCKWYT9UHP
OVBWL3BMXSFGQX3
401NZOLDUGCQM
D6ZNFSCJ7I6L
YYZIYS8L5IAGE80
YGTX66QIKLBI
JLXYYHOEYWWKTN
IUICC74MYK0R8
NRZ1DCZ5XD5R
7WUIAQIPLF26W5I
MLRYXDBJBGLZI
1PUTXO6KKOOB9
SQ58KLFZRP7FKQX
SLVLPNSVN0BTDN2
PEGJQIQCOIYFBO
IMAIQAKST0NG81
1J2H3FMN0M8C
VSHEZTTTHMIUEO
ZRJQ5HJTP6RF
ATUGUOXRQYUXW
VQUYP5H0YJJ8C
OJVBBZJWCR67O
TYTDEEWMGW5E
CNL8WNCPUHUOFZI
4CKORRUZDPWWJ
YUUAUIWJBIT6S0
WJFOL38C6XEGN5
A1BC2H4BNTJK
KNQ7IXFTM4ER
MMFASCCYJBJG
D9UY1QB1F2QCLJJ
1CJVNKBPNN0MBVG
E0WKKHZPEHQV
377XSEQBBX4KZYN
CIDAQQWIY8HEOLS
Q38MBS5WMLEA
SBETCHSPT2OH8
UMIVZCBU5FQDPOK
EECNDFGMYT3L
ZUHRTSTQTJK4
2UTDDRM0LWEBZG
JBFD85SMYRMTT
OIDKIHFI8W1QIY
XNIZA1MWWBQSI7
OKPW909ZT2P8M
SBB7VUW1MAGQ6K
3N1AJKZQAKVX3H
BHL2AUV6KBVJ
XUJUBZDPK8KQ7
H3W86YTJW2QVY
AK3BRBLPWSPJ
XMRTYFVZZ9GUI
S8WKQCSCT46C
LC7YFELYLQHF
I9N8DMBH5SYILA
AQORAR4MRHHQZ
HW5J0MBQ4SZ3
0TCR8OPW80MXX
邀请码只建议在本帖中的代码使用,如有需要可以移步论坛坛友发的集中贴,谢谢合作
页: [1]
查看完整版本: 让我们实现Manus邀请码自由(内含200个激活码)