您正在查看: Other-新手教程 分类下的文章

Neko Docker 中运行并使用 WebRTC 技术的自托管虚拟浏览器

介绍

这是一个在 Docker 中运行并使用 WebRTC 技术的自托管虚拟浏览器。Neko 是一个功能强大的工具,可让您在虚拟环境中运行功能齐全的浏览器,让您能够从任何地方安全且私密地访问互联网。使用 Neko,您可以像在常规浏览器上一样浏览网页、运行应用程序和执行其他任务,所有这些都在安全和隔离的环境中完成。无论您是希望测试 Web 应用程序的开发人员、寻求安全浏览体验的注重隐私的用户,还是只是想利用虚拟浏览器的便利性和灵活性的人,Neko 都是完美的解决方案。

除了安全和隐私功能外,Neko 还允许多个用户同时访问浏览器。这使其成为需要共享浏览器访问权限的团队或组织以及希望使用多台设备访问同一虚拟环境的个人的理想解决方案。使用 Neko,您可以轻松安全地与他人共享浏览器访问权限,而无需担心维护单独的配置或设置。无论您需要协作完成项目、访问共享资源,还是只是想与朋友或家人共享浏览器访问权限,Neko 都能让您轻松实现。

快速启动

https://neko.m1k1o.net/#/getting-started/quick-start

Meemaw 开源MPC钱包使用技术调研

介绍

一款开源MPC钱包SaaS服务
官网:https://getmeemaw.com/
文档:https://getmeemaw.com/docs/getting-started/

特点

接入简单

自定义Auth集成

参考:https://getmeemaw.com/docs/auth/custom

提供云和私有化部署

云:https://getmeemaw.com/docs/getting-started/cloud
私有化:https://getmeemaw.com/docs/getting-started/self-host

部署测试

云部署

准备Sepolia RPC

例如:AlchemyInfura

注册Supabase

使用三方的Auth服务方便演示,后期可以自定义

  • 打开https://supabase.com/ 注册并登录账户
  • 新建组织和项目
  • 点击Authentication,添加测试User {记录邮箱和密码,后面登录会需要}

创建Meemaw账户

配置Meemaw

配置Supabase URL 和 Supabase API 密钥

在仪表板中,单击左侧菜单中的“身份验证”。从那里,您可以配置用户身份验证和认证方式。
为了便于本示例,选择“Supabase”作为身份验证提供商,然后提供您的 Supabase URL 和 Supabase API 密钥。别忘了保存。
注:Supabase信息获取,直接在Supabase新建的项目首页中获取

配置 security

选择security,测试直接设置为*,后期根据真实ip设置

获取项目 URL

点击左侧API,https://getmeemaw.com/cloud/api, 复制Project URL

Clone实例

git clone https://github.com/getmeemaw/example-js.git
cd example-js

修改实例参数

编辑实例代码 client/src/app/tx.jsx,使用您的项目URL 进行更新

const meemaw = await Meemaw.init('https://getmeemaw.co/YOUR-PROJECT-URL');

使用前面准备的Sepolia RPC替换YOUR-JSON-RPC-API-URL

const web3 = new Web3(new Web3.providers.HttpProvider("YOUR-JSON-RPC-API-URL"));

启动测试实例

cd client
npm install
npm run dev

注:nodejs 需要v18及以上版本

登陆测试

访问:http://localhost:3000


输入前面Supabase测试User邮箱和密码,进行登录

初始化

首次使用,创建钱包

非首次,可以选择从备份恢复

创建成功


可以先给新建的钱包地址转入一些gas,然后测试交易

测试交易

输入接收eth地址,点击 Send Transaction,等待转账结束,查看区块浏览器
云部署测试结束

私有化部署

部署服务端

与云部署相同实例

git clone https://github.com/getmeemaw/example-js.git
cd example-js

编辑 server/.env,更新SUPABASE_URL并SUPABASE_API_KEY使用您的配置 {与云部署步骤相同}

启动Server
docker compose up -d
meemaw_app  | 2024/10/11 10:36:14 Schema does not exist, creating...
meemaw_app  | 2024/10/11 10:36:14 Schema loaded
meemaw_app  | 2024/10/11 10:36:14 Starting server on port 8421

修改client

步骤和云部署一致,只是Meemaw.init地址改为Server对应的ip:8421
编辑实例代码 client/src/app/tx.jsx,使用您的项目URL 进行更新

const meemaw = await Meemaw.init('http://服务端所在ip+端口或域名');

使用前面准备的Sepolia RPC替换YOUR-JSON-RPC-API-URL

const web3 = new Web3(new Web3.providers.HttpProvider("YOUR-JSON-RPC-API-URL"));

其余使用逻辑与前面云部署步骤一致

其它

导出MPC备份和导出私钥

参考example-js页面功能代码

多设备

当一个账户已经在其它客户端A创建钱包后,在另外客户端B再次登录相同账户,再次点击创建钱包时,会走新设备加入流程,

  • 客户端B: meemaw.GetWallet()
  • 客户端A: wallet.AcceptDevice()

通过后 ,客户端B将作为新设备加入

对于Meemaw和其它的MPC先关钱包或逻辑有少许不同,类似Sygma, 是有多个relayer服务节点,彼此间完成TSS过程,Meemaw是meemaw_app服务与加入的客户端SDK完成,客户端SDK也参与了TSS

auth-通过 oauth2、直接和电子邮件进行身份验证

该库提供 Github、Google、Facebook、Microsoft、Twitter、Yandex、Battle.net、Apple、Patreon 和 Telegram 的“社交登录”,以及自定义身份验证提供商和电子邮件验证。

  • 可以同时使用多个 oauth2 提供程序
  • 特殊dev供应商允许本地测试和开发
  • JWT 存储在具有 XSRF 保护的安全 cookie 中。Cookie 可以是仅限会话的
  • 最小范围仅包含用户名、ID 和图片(头像)
  • 使用用户提供的凭证检查器直接进行身份验证
  • 使用用户提供的发件人(电子邮件、即时通讯等)验证身份验证
  • 自定义 oauth2 服务器并能够使用任何第三方提供商
  • 集成头像代理与 FS、boltdb 和 gridfs 存储
  • 支持用户自定义头像存储
  • 默认头像的 Identicon
  • 带有用户定义验证器的黑名单
  • 支持多个受众
  • 可定制的安全密钥SecretReader
  • 能够将额外信息存储到令牌中并在登录时检索
  • 预授权和后身份验证挂钩来处理自定义用例。
  • 可轻松集成到 http 路由器的中间件
  • 从请求中提取用户信息的包装器
  • 基于角色的访问控制

https://github.com/go-pkgz/auth

获取用户真正转发了某个twitter

import tweepy

# 你的Twitter API Key
consumer_key = 'your_consumer_key'
consumer_secret = 'your_consumer_secret'
access_token = 'your_access_token'
access_token_secret = 'your_access_token_secret'

# 设置API访问
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

# 检查用户是否转发了推文
def check_retweet(username, tweet_id):
    try:
        # 获取用户的转发列表
        retweets = api.retweets(tweet_id)
        for retweet in retweets:
            if retweet.user.screen_name == username:
                return True
        return False
    except tweepy.TweepError as e:
        print(f"Error: {e}")
        return False

# 使用示例
username = 'example_user'
tweet_id = '1234567890123456789'  # 你的推文ID
is_retweeted = check_retweet(username, tweet_id)
print(f"{username} has {'retweeted' if is_retweeted else 'not retweeted'} the tweet.")

https://developer.x.com/en/docs/twitter-api/tweets/retweets/introduction
https://developer.twitter.com/apitools/api?endpoint=%2F2%2Fusers%2F%7Bid%7D%2Fretweets&method=post

Git 修改.Submodule文件 url 生效

  1. 修改 .gitmodules 文件中对应模块的url属性;
  2. 使用 git submodule sync 命令,将新的URL更新到文件.git/config;
  3. 再使用命令初始化子模块:git submodule init
  4. 最后使用命令更新子模块:git submodule update