1. 测试
Golem API文档
  • 文档
    • FAQ
    • 重定向到 API 文档
      GET
    • 获取 Swagger SwaggerJSON
      GET
    • 获取 Swagger SwaggerYAML
      GET
  • 登录
    • 开始登录
      GET
    • 账号密码登录
      POST
    • 首次登录初始化
      GET
    • 唤醒登录
      GET
    • 退出登录
      GET
    • 获取登录状态
      GET
  • 测试
    • html滑块
      GET
  • 联系人
    • 获取联系人列表
      GET
    • 删除联系人
      DELETE
    • 从黑名单移除
      DELETE
    • 添加到黑名单
      POST
    • 获取联系人详细信息
      POST
    • *发送好友申请
      POST
    • 通过好友验证
      POST
    • *附近的人
      POST
    • 设置联系人备注
      PUT
    • 搜索联系人
      POST
    • *上传通讯录匹配好友
      POST
  • 群聊
    • 创建群聊
      POST
    • 移除群管理员
      DELETE
    • 设置群管理员
      POST
    • 设置群公告
      PUT
    • 保存到通讯录
      PUT
    • 面对面建群
      POST
    • 获取群信息
      GET
    • 邀请群成员
      POST
    • 同意入群邀请
      POST
    • 扫码进群
      POST
    • 删除群成员
      DELETE
    • 获取群成员详情
      GET
    • 添加群成员
      POST
    • 设置群名称
      PUT
    • 获取群二维码
      GET
    • 退出群聊
      DELETE
    • 设置群备注
      PUT
    • 转让群主
      POST
  • 消息
    • 发送应用消息
    • 发送名片消息
    • 下载文件附件
    • 下载消息图片
    • 下载视频
    • 下载语音
    • 发送表情消息
    • 转发消息
    • 转发文件
    • 发送图片消息
    • 发送链接消息
    • 发送位置消息
    • 撤回消息
    • 开始输入状态
    • 停止输入状态
    • 同步消息
    • 发送文本消息
    • 发送视频消息
    • 发送语音消息
  • CDN
    • CDN 上传聊天图片
    • CDN 上传聊天视频
    • CDN 上传朋友圈图片
    • CDN 上传朋友圈视频
    • CDN 下载高清图片
    • CDN 下载朋友圈视频
    • CDN 下载聊天视频
    • CDN 下载视频封面
  • 标签
    • 修改联系人标签
    • 获取标签列表
    • 添加标签
    • 删除标签
    • 更新标签名称
  • 收藏
    • 获取收藏信息
    • 删除收藏项
    • 获取收藏项详情
    • 同步收藏列表
  • 小程序
    • 设置预设头像
    • 获取随机头像
    • 上传自定义头像图片
    • 调用小程序云函数
    • 小程序 JS 登录
    • 小程序扫码授权登录
    • 解绑手机号
    • 获取已绑定手机号列表
    • 绑定手机号
    • 校验手机验证码
    • 发送手机验证码
    • SDK OAuth 确认授权
    • 第三方 APP OAuth 授权
    • 获取用户 OpenID
    • 操作小程序数据(WebAPI)
    • 获取小程序使用记录
    • 添加小程序使用记录
    • 获取小程序会话二维码
    • 获取小程序运行时会话
  • 朋友圈
    • 发布朋友圈
    • 删除朋友圈
    • 获取单条朋友圈详情
    • 删除评论
    • 评论朋友圈
    • 取消点赞
    • 点赞朋友圈
    • 设置朋友圈隐私
    • 同步朋友圈数据
    • 获取朋友圈时间线
    • 上传朋友圈媒体
    • 获取用户朋友圈主页
  • 公众号
    • 取关公众号
    • 关注公众号
    • 获取公众号 A8Key
    • 点赞公众号文章
    • 阅读公众号文章
    • JSAPI 预验证
    • OAuth 授权
  • 支付
    • 支付-转账
      • 确认转账收款
      • 确认微信转账
      • 创建微信转账
    • 支付-红包
      • 创建微信红包
      • 查询红包领取详情
      • 抢红包(接收+打开一步完成)
      • 查询红包领取列表
      • 打开红包(第二步)
      • 接收红包(第一步)
    • 获取绑定银行卡及余额信息
    • 生成支付收款二维码(F2F)
  • 用户
    • 设置微信号
    • 上传头像
    • 获取证书信息
    • 获取绑定硬件设备列表
    • 绑定邮箱
    • 发送验证邮件
    • 绑定手机号
    • 发送手机验证码
    • 上报运动步数
    • 设置密码
    • 验证密码
    • 设置隐私选项
    • 获取个人信息
    • 更新个人信息
    • 获取个人二维码
    • 删除安全设备
    • 获取安全设备列表
  • 管理
    • 获取推送地址
    • 设置推送地址
    • 获取存储加密状态
    • 设置存储加密状态
  • 健康检查
    GET
  • 自动滑块
    POST
  • 数据模型
    • basepb.BaseRequest
    • basepb.BaseResponse
    • basepb.Buffer
    • basepb.BuiltinIPList
    • basepb.BuiltinIPList_Info
    • basepb.Gender
    • basepb.Hosts
    • basepb.Hosts_Info
    • basepb.NetworkControl
    • basepb.OperateResponse
    • basepb.OperateResponse_Result
    • chatroom.ConsentJoinResult
    • chatroom.ScanJoinResult
    • contactpb.AddChatroomMemberResponse
    • contactpb.ChatroomAdminResponse
    • contactpb.CreateChatroomResponse
    • contactpb.CustomizedInfo
    • contactpb.DeleteChatroomMemberResponse
    • contactpb.FacingCreateChatroomResponse
    • contactpb.FacingCreateChatroomResponse_FacingMember
    • contactpb.GetChatroomInfoDetailResponse
    • contactpb.GetChatroomInfoDetailResponse_Tools
    • contactpb.GetChatroomInfoDetailResponse_Tools_Todo
    • contactpb.GetContactResponse
    • contactpb.GetContactResponse_VerifyUserValidTicket
    • contactpb.GetQRCodeResponse
    • contactpb.LbsResponse
    • contactpb.LbsResponse_LbsInfo
    • contactpb.LbsResponse_LbsInfo_CustomizedInfo
    • contactpb.LbsResponse_LbsInfo_SnsUserInfo
    • contactpb.ListMembersResponse
    • contactpb.ListMembersResponse_Result
    • contactpb.ListMembersResponse_Result_MemberInfo
    • contactpb.Member
    • contactpb.OpenIMContact
    • contactpb.OpenIMContact_CustomInfo
    • contactpb.SearchContactResponse
    • contactpb.SearchContactResponse_SearchContactItem
    • contactpb.SetChatroomAnnouncementResponse
    • contactpb.SnsUserInfo
    • contactpb.UploadMContactResponse
    • contactpb.VerifyUserResponse
    • dto.AddLabelRequest
    • dto.BindEmailRequest
    • dto.BindMobileRequest
    • dto.ChatroomMembersRequest
    • dto.CollectMoneyParam
    • dto.CommentParam
    • dto.ConfirmPreTransferParam
    • dto.ConsentJoinRequest
    • dto.CreateChatroomRequest
    • dto.CreateHongBaoParam
    • dto.CreatePreTransferParam
    • dto.DelSafeDeviceRequest
    • dto.DownloadFileParam
    • dto.DownloadImageParam
    • dto.DownloadVideoParam
    • dto.DownloadVoiceParam
    • dto.FacingCreateRequest
    • dto.ForwardParam
    • dto.GrabHongBaoParam
    • dto.LbsFindRequest
    • dto.MiniappAddAvatarRequest
    • dto.MiniappAddMobileRequest
    • dto.MiniappAddRecordRequest
    • dto.MiniappCheckVerifyCodeRequest
    • dto.MiniappCloudCallFunctionRequest
    • dto.MiniappDelMobileRequest
    • dto.MiniappGetRuntimeSessionRequest
    • dto.MiniappGetSessionQRCodeRequest
    • dto.MiniappGetUserOpenIDRequest
    • dto.MiniappJSLoginRequest
    • dto.MiniappOperateWxDataRequest
    • dto.MiniappQrcodeAuthRequest
    • dto.MiniappSendVerifyCodeRequest
    • dto.MiniappUploadAvatarImgRequest
    • dto.ModifyContactLabelsRequest
    • dto.OauthSdkAppParam
    • dto.OpenHongBaoParam
    • dto.PostParam
    • dto.PrivacyOption
    • dto.PushConfig
    • dto.QueryHongBaoDetailParam
    • dto.QueryHongBaoListParam
    • dto.ReceiveHongBaoParam
    • dto.ReportMotionRequest
    • dto.RevokeParam
    • dto.ScanJoinRequest
    • dto.SearchContactRequest
    • dto.SendAppParam
    • dto.SendCardParam
    • dto.SendFriendRequest
    • dto.SendLinkParam
    • dto.SendPositionParam
    • dto.SendTextParam
    • dto.SendVerifyMobileRequest
    • dto.SetAliasRequest
    • dto.SetAnnouncementRequest
    • dto.SetPasswordRequest
    • dto.SetPrivacyParam
    • dto.SetPrivacyRequest
    • dto.SetRemarkRequest
    • dto.StorageConfig
    • dto.ThirdAppGrantParam
    • dto.UpdateLabelRequest
    • dto.UpdateProfileRequest
    • dto.UploadContactRequest
    • dto.VerifyFriendRequest
    • dto.VerifyPasswordRequest
    • favor.SyncResult
    • favoritepb.AddItemRequest
    • favoritepb.BatchDeleteItemResponse
    • favoritepb.BatchDeleteItemResponse_Result
    • favoritepb.BatchGetItemResponse
    • favoritepb.BatchGetItemResponse_Object
    • favoritepb.GetInfoResponse
    • golem_pkg_login.PasswordLoginResult
    • handler.PasswordLoginRequest
    • handler.Response
    • labelpb.AddContactResponse
    • labelpb.DeleteContactResponse
    • labelpb.GetContactListResponse
    • labelpb.ModifyContactListResponse
    • labelpb.Pair
    • labelpb.UpdateContactResponse
    • login.QRCodeResult
    • login.WakeupResult
    • messagepb.CustomizedInfo
    • messagepb.DeleteChatContact
    • messagepb.DeleteContact
    • messagepb.DeleteContactMessage
    • messagepb.DisturbSetting
    • messagepb.DisturbSetting_TimeSpan
    • messagepb.DownloadAppAttachResponse
    • messagepb.DownloadImageResponse
    • messagepb.DownloadVideoResponse
    • messagepb.DownloadVoiceResponse
    • messagepb.FunctionSwitch
    • messagepb.LinkedinContactItem
    • messagepb.ModifyChatroomMember
    • messagepb.ModifyChatroomMemberDisplayName
    • messagepb.ModifyContact
    • messagepb.ModifyContact_AdditionalContactList
    • messagepb.ModifyContact_AdditionalContactList_LinkedinItem
    • messagepb.ModifyContact_ChatroomInfo
    • messagepb.ModifyContact_ChatroomMemberData
    • messagepb.ModifyContact_ChatroomMemberData_MemberInfo
    • messagepb.ModifyContact_MobileInfo
    • messagepb.ModifyMessageStatus
    • messagepb.ModifyUserAvatar
    • messagepb.ModifyUserInfo
    • messagepb.ModifyUserInfo_GmailList
    • messagepb.ModifyUserInfo_GmailList_Info
    • messagepb.NewMessage
    • messagepb.PatternLockInfo
    • messagepb.QuitChatroom
    • messagepb.RevokeMessageResponse
    • messagepb.SafeDevice
    • messagepb.SafeDeviceList
    • messagepb.SendAppMessageResponse
    • messagepb.SendMessageResponse
    • messagepb.SendMessageResponse_Result
    • messagepb.SnsUserInfo
    • messagepb.SyncResult
    • messagepb.UploadEmojiResponse
    • messagepb.UploadEmojiResponse_Result
    • messagepb.UploadImageResponse
    • messagepb.UploadVideoResponse
    • messagepb.UploadVoiceResponse
    • messagepb.UserInfoExtend
    • miniapppb.SDKOAuthAuthorizeConfirmResponse
    • paymentpb.CGICommand
    • paymentpb.F2FQrcodeResponse
    • paymentpb.HongBaoResponse
    • paymentpb.TenPayResponse
    • userpb.BindEmailResponse
    • userpb.BindOpMobileResponse
    • userpb.BindOpMobileResponse_SafeDeviceList
    • userpb.BindOpMobileResponse_SafeDeviceList_SafeDevice
    • userpb.BindOpMobileResponse_ShowStyleKey
    • userpb.DeleteSafeDeviceResponse
    • userpb.GeneralSetResponse
    • userpb.GetBoundHardDevicesResponse
    • userpb.GetBoundHardDevicesResponse_HardDevice
    • userpb.GetBoundHardDevicesResponse_HardDevice_Attribute
    • userpb.GetBoundHardDevicesResponse_HardDevice_Device
    • userpb.GetCertResponse
    • userpb.GetCertResponse_RSACert
    • userpb.GetProfileResponse
    • userpb.GetSafetyInfoResponse
    • userpb.GetSafetyInfoResponse_SafetyDevice
    • userpb.GetSafetyInfoResponse_SafetyInfo
    • userpb.SendVerifyEmailResponse
    • userpb.SetPasswordResponse
    • userpb.SportDeviceInfo
    • userpb.UploadAvatarResponse
    • userpb.UploadDeviceStepResponse
    • userpb.VerifyPasswordResponse
    • util.SyncResult
    • wrapperspb.StringValue
  1. 测试

html滑块

开发中
GET
http://127.0.0.1:9001/api/v1/slider-verify-html

请求参数

Query 参数

Header 参数

返回响应

🟢200成功
application/json
Bodyapplication/json

请求示例请求示例
Shell
JavaScript
Java
Swift
curl --location 'http://127.0.0.1:9001/api/v1/slider-verify-html?data=62706c6973743030d4010203040506090a582476657273696f6e58246f626a65637473592461726368697665725424746f7012000186a0a2070855246e756c6c5f10203439623132313439353164313364393834643031343461656331353466635f100f4e534b657965644172636869766572d10b0c54726f6f74800108111a232d32373a406375787d0000000000000101000000000000000d0000000000000000000000000000007f&ticket=1_e142711a8b36d0f5a0c38ce7d1a875e3' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkZXZpY2VfaWRzIjpbXSwiaWF0IjoxNzg0OTc2ODE1LCJuYmYiOjE3ODQ5NzY4MTUsImV4cCI6MTgxNjUxMjgxNX0.k1cI7RnJiF9LZPVTKZsZfeJfApTf78aVO1zzxKi0fOQ'
响应示例响应示例
{"code":200,"message":"success","data":"\u003c!doctype html\u003e\n\u003chtml lang=\"en\"\u003e\n  \u003chead\u003e\n    \u003cmeta charset=\"UTF-8\" /\u003e\n    \u003cmeta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" /\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" /\u003e\n    \u003ctitle\u003eMac 滑块验证\u003c/title\u003e\n    \u003cstyle\u003e\n      .weui-toast {\n        position: fixed;\n        z-index: 5500;\n        font-size: 10px;\n        width: 13.6em;\n        height: 13.6em;\n        top: 40%;\n        left: 50%;\n        -webkit-transform: translate(-50%, -50%);\n        transform: translate(-50%, -50%);\n        text-align: center;\n        border-radius: 12px;\n        color: hsla(0, 0%, 100%, 0.9);\n        display: flex;\n        -webkit-box-orient: vertical;\n        -webkit-box-direction: normal;\n        -webkit-flex-direction: column;\n        flex-direction: column;\n        -webkit-box-align: center;\n        -webkit-align-items: center;\n        align-items: center;\n        -webkit-box-pack: center;\n        -webkit-justify-content: center;\n        justify-content: center;\n        background-color: #4c4c4c;\n        background-color: #4c4c4c;\n        box-sizing: border-box;\n        line-height: 1.4;\n      }\n\n      .weui-loading {\n        font-size: 16px;\n        width: 1em;\n        height: 1em;\n        display: inline-block;\n        vertical-align: middle;\n        background: transparent\n          url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\")\n          no-repeat;\n        background-size: 100%;\n      }\n\n      .weui-btn_loading.weui-btn_primary .weui-loading,\n      .weui-loading.weui-icon_toast,\n      .weui-loading.weui-loading_transparent {\n        background-image: url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23ededed' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23ededed' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23ededed' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23ededed' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23ededed' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\");\n      }\n\n      .weui-mask-loading {\n        display: inline-block;\n        vertical-align: middle;\n        font-size: 16px;\n        width: 1em;\n        height: 1em;\n        -webkit-mask: url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\")\n          0 0 no-repeat;\n        mask: url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3CanimateTransform attributeName='transform' begin='0s' dur='1s' type='rotate' values='0 40 40;360 40 40' repeatCount='indefinite'/%3E%3C/g%3E%3C/svg%3E%0A\")\n          0 0 no-repeat;\n        -webkit-mask-size: cover;\n        mask-size: cover;\n        background-color: currentColor;\n        color: #606060;\n      }\n    \u003c/style\u003e\n  \u003c/head\u003e\n\n  \u003cbody\u003e\n    \u003cdiv id=\"loadingToast\" style=\"display: none\"\u003e\n      \u003cdiv class=\"weui-mask_transparent\"\u003e\u003c/div\u003e\n      \u003cdiv class=\"weui-toast\"\u003e\n        \u003ci class=\"weui-loading weui-icon_toast\"\u003e\u003c/i\u003e\n        \u003cp class=\"weui-toast__content\"\u003e正在加载\u003c/p\u003e\n      \u003c/div\u003e\n    \u003c/div\u003e\n    \u003cbutton id=\"CaptchaId\" type=\"button\"\u003e测试\u003c/button\u003e\n  \u003c/body\u003e\n\n  \u003cscript\u003e\n    var userAgent = \"Mozilla/5.0 (iPhone; CPU iPhone OS 18_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.62(0x18003e2f) NetType/WIFI Language/zh_CN\";\n    var base64UA = btoa(unescape(encodeURIComponent(userAgent)));\n\n    function queryToObj(query) {\n      if (query.startsWith(\"?\")) query = query.slice(1);\n      const obj = {};\n      query.split(\"\u0026\").forEach((pair) =\u003e {\n        if (!pair) return;\n        const [key, value] = pair.split(\"=\");\n        obj[decodeURIComponent(key)] = decodeURIComponent(value || \"\");\n      });\n      return obj;\n    }\n\n    function objToQuery(obj) {\n      return Object.keys(obj)\n        .map(\n          (key) =\u003e encodeURIComponent(key) + \"=\" + encodeURIComponent(obj[key]),\n        )\n        .join(\"\u0026\");\n    }\n\n    function cap_union_conver(url) {\n      if (url.includes(\"cap_union_prehandle\")) {\n        // 取 query\n        var tem0 = url.split(\"?\")[0];\n        var tem1 = url.split(\"?\")[1];\n        // 转 对象\n        var tem1Obj = queryToObj(tem1);\n        // 修改 ua\n        tem1Obj.ua = base64UA;\n        // 修改 entry_url\n        tem1Obj[\"entry_url\"] =\n          \"https://shminorshort.weixin.qq.com/security/readtemplate\";\n        // 还原回 query\n        url = tem0 + \"?\" + objToQuery(tem1Obj);\n      }\n      return url;\n    }\n\n    // 初始化\n    (function () {\n      var Bridge = {\n        invoke: function (apiName, conf, callback) {\n          var result = {\n            err_msg: apiName + \":ok\",\n          };\n          if (apiName === \"mmsf0001\") {\n            result.securityInfo = \"\";\n          }\n          if (apiName === \"getSystemInfo\") {\n            result.brand = \"xiaomi\";\n          }\n          if (callback) {\n            callback(result);\n          }\n        },\n      };\n      window.WeixinJSBridge = Bridge;\n      console.log(\"初始化 WeixinJSBridge\");\n    })();\n\n    var originalCreateElement = document.createElement;\n    document.createElement = function (tagName, ...args) {\n      const element = originalCreateElement.call(this, tagName, ...args);\n      if (tagName.toLowerCase() === \"script\") {\n        // 兼容直接赋值 src\n        Object.defineProperty(element, \"src\", {\n          set(val) {\n            if (val.includes(\"cap_union_prehandle\")) {\n              val = cap_union_conver(val);\n            }\n            this.setAttribute(\"src\", val);\n          },\n          get() {\n            return this.getAttribute(\"src\");\n          },\n        });\n      }\n      return element;\n    };\n\n    // 获取验证码\n    function getCaptcha() {\n      document.getElementById(\"loadingToast\").style.display = \"flex\";\n      var script = null;\n      try {\n        var src = \"https://ssl.captcha.qq.com/template/TCapIframeApi.js?rand=\" + Math.random();\n        script = document.createElement(\"script\");\n        src = src + \"\u0026aid=2078688116\u0026clientype=1\u0026lang=2052\u0026apptype=null\u0026captype=7\u0026disturblevel=1\";\n        script.onerror = function () {\n          document.body.removeChild(script);\n          document.getElementById(\"loadingToast\").style.display = \"none\";\n        };\n        script.onload = function () {\n          WeixinJSBridge.invoke(\"getUserConfig\", {}, (resp) =\u003e {\n            var isAccessibilityMode = resp.isAccessibilityMode === true;\n            var isGray = true;\n            capInit(document, {\n              enableAged: !isGray ? false : isAccessibilityMode ? \"force\" : true,\n              showHeader: false,\n              enableDarkMode: window.matchMedia \u0026\u0026 window.matchMedia(\"(prefers-color-scheme: dark)\").matches,\n              userLanguage: \"zh_CN\",\n              readyCallback: function () {\n                document.getElementById(\"loadingToast\").style.display = \"none\";\n              },\n              themeColor: \"1AAD19\",\n              callback: function (data) {\n                var __device_type__ = \"\";\n                var __client_version__ = \"0\";\n                var __data__ = \"62706c6973743030d4010203040506090a582476657273696f6e58246f626a65637473592461726368697665725424746f7012000186a0a2070855246e756c6c5f10203439623132313439353164313364393834643031343461656331353466635f100f4e534b657965644172636869766572d10b0c54726f6f74800108111a232d32373a406375787d0000000000000101000000000000000d0000000000000000000000000000007f\";\n                var __ticket__ = \"1_e142711a8b36d0f5a0c38ce7d1a875e3\";\n                var __verifyid__ = \"4d2126be-8d02-4533-9148-6903039d3f36\";\n                if (__device_type__[0] == \"{\") {\n                  __device_type__ = \"\";\n                }\n                if (__client_version__[0] == \"{\") {\n                  __client_version__ = \"\";\n                }\n                if (__data__[0] == \"{\") {\n                  __data__ = \"\";\n                }\n                if (__ticket__[0] == \"{\") {\n                  __ticket__ = \"\";\n                }\n                if (__verifyid__[0] == \"{\") {\n                  __verifyid__ = \"\";\n                }\n                console.log(\"callback\", data);\n\n                // 最终请求是此项目中的/security-verify接口\n                var getUrl = \"/api/v1/robot/login/slider-verify-submit?t=login_verify_entrances/w_tcaptcha_ret\u0026wechat_real_lang=zh_CN\u0026aid=2078688116\u0026clientype=1\u0026lang=2052\u0026apptype=undefined\u0026captype=7\u0026disturblevel=1\";\n                getUrl = getUrl + \"\u0026\" + objToQuery(data);\n                getUrl = getUrl + \"\u0026\" + \"data\" + \"=\" + __data__;\n                getUrl = getUrl + \"\u0026\" + \"secticket\" + \"=\" + __ticket__;\n                getUrl = getUrl + \"\u0026\" + \"verifyid\" + \"=\" + __verifyid__;\n                getUrl = getUrl + \"\u0026\" + \"device_type\" + \"=\" + __device_type__;\n                getUrl = getUrl + \"\u0026\" + \"client_version\" + \"=\" + __client_version__;\n                var decodeUrl = decodeURIComponent(getUrl);\n                // 发送 GET 请求(兼容所有浏览器)\n                function sendGet(url, callback) {\n                  var xhr = new XMLHttpRequest();\n                  xhr.open(\"GET\", url, true);\n                  xhr.onreadystatechange = function () {\n                    if (xhr.readyState === 4) {\n                      if (xhr.status \u003e= 200 \u0026\u0026 xhr.status \u003c 300) {\n                        try {\n                          var jsonResponse = JSON.parse(xhr.responseText);\n                          if (jsonResponse.code !== 200) {\n                            callback(new Error(jsonResponse.message), \"\");\n                          } else {\n                            callback(null, xhr.responseText);\n                          }\n                        } catch (ex) {\n                          callback(ex, \"\");\n                        }\n                      } else {\n                        callback(new Error(xhr.statusText), \"\");\n                      }\n                    }\n                  };\n                  xhr.send();\n                }\n\n                // 使用示例\n                sendGet(decodeUrl, function (err, resp) {\n                  console.log(\"提交滑块验证结果: \", err, resp);\n                  const onComplete = (type, data) =\u003e {\n                    if (window.parent \u0026\u0026 window.parent !== window) {\n                      // 通知主页面 (iframe 模式)\n                      window.parent.postMessage({ type, data }, \"*\");\n                    } else if (window.opener) {\n                      // 通知主页面 (弹窗模式)\n                      window.opener.postMessage({ type, data }, \"*\");\n                      // 关闭自己\n                      window.close();\n                    }\n                  };\n                  if (err) {\n                    onComplete(\"sliderResult\", {\n                      success: false,\n                      message: err.message,\n                    });\n                  } else {\n                    onComplete(\"sliderResult\", { success: true, message: \"\" });\n                  }\n                });\n              },\n            });\n          });\n        };\n        script.src = src;\n        document.body.appendChild(script);\n      } catch (error) {\n        if (script) {\n          document.body.appendChild(script);\n        }\n      }\n    }\n\n    // 定义验证码触发事件\n    window.onload = function () {\n      var __ticket__ = \"1_e142711a8b36d0f5a0c38ce7d1a875e3\";\n      if (__ticket__[0] == \"{\") {\n        __ticket__ = \"\";\n      }\n      document.getElementById(\"CaptchaId\").style.display = \"none\";\n      if (!__ticket__) {\n        document.getElementById(\"CaptchaId\").style.display = \"inline-block\";\n      }\n      document.getElementById(\"CaptchaId\").onclick = getCaptcha;\n      if (__ticket__.length) {\n        document.getElementById(\"CaptchaId\").click();\n      }\n    };\n  \u003c/script\u003e\n\u003c/html\u003e\n"}
修改于 2026-07-25 13:20:00
上一页
获取登录状态
下一页
获取联系人列表
Built with