Git Product home page Git Product logo

comwechatrobot's Introduction

你好 👋

😄很高兴你点开了我的主页

  • 🌱 学习了一段时间逆向,并开源了一个简单的微信机器人
  • ⚡ 欢迎使用ComWeChatRobot,希望能帮助到你

comwechatrobot's People

Contributors

amchii avatar duo avatar hibmm avatar ljc545w avatar lovezm avatar ly1102 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

comwechatrobot's Issues

今天又发现个问题,如果一下子来很多消息的话,会有获取不到其中一部分的情况

用的python,代码如下

robot = comtypes.client.CreateObject("WeChatRobot.CWeChatRobot")
robot.CStartRobotService()
robot.CStartReceiveMessage()

while True:
msg = robot.CReceiveMessage()
print(msg)
time.sleep(0.3)

尝试用一个微信连续发送10条消息,内容为数字1-9和0。
每次都会收不到两条,基本上都是2收不到,很少有2收的到的情况。
另一个收不到的信息无固定,都是6-9中的一个,0每次都能收的到。
已经尝试过和休眠时间无关,把休眠时间去掉了也是一样的测试结果。
电脑微信显示接受到的是1-9、0。
试了几次,数量不同,有连续发送10条,连续发送20条,连续发送50条的,基本上如果一下子接受很多消息的话,大概每5条会有1条接收不到。

Docker支持

Hi, ljc545w
为了能够更方便地部署微信机器人, 我构建了一个在docker环境下注入win32 dll的镜像。
开源版本为injector-box
并实现了docker版本的微信机器人服务端, 在我的私人项目wechat-service中给出了完整的文档和demo。设置为私有的部分原因是暂时没有完全开源的方案,且缺乏底层逆向技术支持,无法解决issue。
由于ComWeChatRobot维护积极,考虑到项目生命周期,我计划实现一个基于ComWeChatRobot的wechat-service
我能否邀请你参与wechat-service? 如果一切顺利的话,我们也许能给ComWeChatRobot添加更广泛的支持,并合并到ComWeChatRobot。

关于AT群内成员时强制显示昵称的问题

大佬,我又来打扰了。

在Issue #26 中,我解决了如何获取真实的群成员昵称。
但是由机器人发出的带有at的消息时会强制带有微信昵称。

尤其是进行多人AT的时候,我原本是想合并原有的单人AT,要AT不同的人做不同的事情,可是机器人在开头一股脑全都AT掉了。
目前我能做到的就是对文本进行如下的改进:

@Ringo Zhang @張 
----------
@机会 上游戏啦!
----------
@财神 该收菜啦!

我有以下几个建议,不知大佬可否采纳:

  1. 自定义是否由机器人在消息开头增加AT;
  2. 接口中提供一个昵称/wxid的字典,在发送时替换AT昵称。
  3. 自定义AT在消息中的位置🤣

谢谢大佬。
希望机器人能越来越完美。

Dll中调用SendArticle时微信奔溃了

调用代码如下:

wchar_t title[0x100] = { 0 };
wchar_t description[0x100] = { 0 };
wchar_t url[0x100] = { 0 };
swprintf_s(title, L"天气预报");
swprintf_s(description, L"点击查看");
swprintf_s(url, L"htp://www.baidu.com");
SendArticle(wxid, title, description, url);

请教是什么原因、调用的方法不对吗、

安装问题

Before use,execute CWeChatRebot.exe /regserver in cmd by admin user

need pip install comtypes

这两步已经安装完毕,CWeChatRobot.exe和DWeChatRobot.dll也都在目录下,但是运行提示错误如下:
Traceback (most recent call last):
File "E:/wexin/微信学习.py", line 8, in
from wxRobot import WeChatRobot
ModuleNotFoundError: No module named 'wxRobot'

请教到底是什么问题呢?

好友检测报错

有些好友 Name 会有 JSON 的格式字符 比如 "
建议 C++ 层里使用 Json 库生成返回信息
或者 wxRobot.py 内 65 行后面加一行代码简单处理:
AddressBookString = AddressBookString.replace('""', '"\"')
image

请教一个HOOK接收消息时抛出 Buffer too small 错误的问题

刚开始注入DLL时没有抛出这个错误,时间一长就突然出现了,导致微信进程卡死
下载

如下是我写的接收消息部分的代码

VOID SendWxMessage(DWORD eax)
{
	ChatMessageData* msg = new ChatMessageData;

	// Msg Type
	msg->dwtype = *((DWORD*)(eax + 0x38));

	// MsgId
	// msg->msgId = (int)*((LPVOID*)(eax + 0x30));

	// Msg Source
	DWORD pSource = *((DWORD*)(eax + 0x3C));
	switch (pSource)
	{
	case 0x00:
		swprintf_s(msg->source, L"收到");
		break;
	case 0x01:
		swprintf_s(msg->source, L"发出");
		break;
	default:
		break;
	}

	// From Wxid
	LPVOID pFromWxid = *((LPVOID*)(eax + 0x48));
	swprintf_s(msg->fromWxid, L"%s", (wchar_t*)pFromWxid);

	// Msg Content
	LPVOID pContent = *((LPVOID*)(eax + 0x70));
	swprintf_s(msg->content, L"%s", (wchar_t*)pContent);

	// Final From Wxid
	DWORD length = *(DWORD*)(eax + 0x170);
	if (length > 0)
	{
		LPVOID pFinalFromWxid = *((LPVOID*)(eax + 0x170));
		swprintf_s(msg->finalFromWxid, L"%s", (wchar_t*)pFinalFromWxid);
	}
	else
	{
		swprintf_s(msg->finalFromWxid, L"");
	}

	// At XML
	LPVOID pAtXml = *((LPVOID*)(eax + 0x1EC));
	swprintf_s(msg->atXml, L"%s", (wchar_t*)pAtXml);

	// Attachment savepath
	length = *(DWORD*)(eax + 0x1AC);
	if (length > 0)
	{
		LPVOID pFilepath = *((LPVOID*)(eax + 0x1AC));
		swprintf_s(msg->filepath, L"%s%s", GetCachedirByFilepath((wchar_t*)pFilepath), (wchar_t*)pFilepath);
	}
	else
	{
		swprintf_s(msg->filepath, L"");
	}

	// 创建线程处理消息
	HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)DealWithMsg, msg, 0, NULL);
	if (hThread != NULL) {
		CloseHandle(hThread);
	}
}

ChatMessageData 结构体如下

// 聊天记录的消息结构体
struct ChatMessageData
{
	DWORD dwtype;					  //消息类型
    wchar_t time[0x50];			      //时间
	wchar_t msgType[0x30];			  //消息类型
    wchar_t source[0x12];			  //消息来源
	wchar_t fromWxid[0x40];			  //微信ID/群ID
	wchar_t fromNickname[0x200];	  //微信名称/群名称
	wchar_t finalFromWxid[0x100];	  //消息发送者
	wchar_t finalFromNickname[0x100]; //消息发送者昵称
	wchar_t content[0x8000];		  //消息内容
	wchar_t atXml[0x5000];		      //atXml
	wchar_t filepath[MAX_PATH];		  //附件保存路径
};

请教大佬,是不是给接收消息结构体赋值时有错误的操作导致了 Buffer too small 错误?

GetDbHandles 疑问,反馈小BUG

尝试备份微信聊天记录(PublicMsg.db)发现 GetDbHandles 返回中并没有需要的库名
image
还有别的方式能读到到 PublicMsg.db 这个库吗
另外反馈小BUG:
requirements.txt 中忘了添加依赖 psutil ,假如 python 没有安装这个库则会导致 Server 卡住,无法再次 StartService 必须重启微信

修改接口方式可行性

对c++这块不是特别熟悉,但之前在linux下发现COM接口无法使用
可以修改COM接口为websocket接口以方便在linux下运行hook提供接口吗

这种方式有可行性吗?

[请教]发送at消息总奔溃

你好,我在发送文本消息的基础上,加入了at用户结构体,但是总数奔溃,可否请教一下是什么原因?

#define SendTextCallOffset 0x6782E7B0 - 0x67370000
#define DeleteTextCacheCallOffset 0x67404200 - 0x67370000

void __stdcall SendTextAt(wchar_t* groupWxid, wchar_t* atWxid, wchar_t* atNickname, wchar_t* content) {
    //组装文本内容
    wchar_t tempmsg[500] = { 0 };
    swprintf_s(tempmsg, L"@%s %s", atNickname, content);
    MessageBox(NULL, tempmsg, TEXT("Title"), MB_YESNO);

    // 结构体
    WxBaseStruct wxGroupWxid(groupWxid);
    WxBaseStruct wxAtWxid(atWxid);
    WxBaseStruct wxTextMsg(tempmsg);
    wchar_t** pWxmsg = &wxTextMsg.buffer;

    // at结构体:数组
    std::vector<WxBaseStruct> allAtWxid;
    allAtWxid.push_back(wxAtWxid);

    char buffer[0x81C] = { 0 };

    DWORD dllBaseAddress = GetWeChatWinBase();
    DWORD callAddress = dllBaseAddress + SendTextCallOffset;

    __asm {
        pushad;
        lea eax, allAtWxid;
        push 0x1;
        push eax;
        mov edi, pWxmsg;
        push edi;
        lea edx, wxGroupWxid;
        lea ecx, buffer;
        call callAddress;
        add esp, 0xC;
        popad;
    }
}

是否考虑新增新好友申请方法

我是因为一天不定时会收到好友同意请求,但是微信新好友时没有提醒的,等我看到都过了好久了

所以如果有接口可以接收到消息给自己提醒 或 有自动同意的就可以同意了

建议增加一个项目的格式化配置文件

他人fork之后可能只是修改了很小的一部分代码却因为格式化工具的差异导致git history大幅变动影响review,我查了一下好像clang-format可以通过在工作目录添加一个配置文件来定义代码风格,比如tab使用空格,int *x等等👀

微信多开的情况

首先感谢作者的Com接口!
我准备按照提供的Com接口封装一个Python和Go的上层接口,在使用时我发现好像没有考虑到多开这种特殊情况。
Windows上按住shift多次点击微信图标可以打开多个微信进程(窗口名一致),通过FindWindow只会找到第一个窗口,我没有逆向相关的知识,但设想是否可以找到所有微信窗口并获得当前微信用户信息以提供选择注入,或者更简单的,提供一个方法接受用户传入的pid来对其注入,至于用户是怎么来区分获取pid的不用关心。后者貌似更容易?

检测好友变为了加好友

我用的今天最新版本,调用 CCheckFriendStatus 结果每调用一次都出现了加好有提示,是否是 3.7 适配的问题
image

发现个问题,不支持线程中发送信息

python代码如下:

def chu_li_msg(msg):
global robot
robot.CSendText('filehelper', msg)
robot = comtypes.client.CreateObject("WeChatRobot.CWeChatRobot")
status = robot.CStartRobotService()
print('ServiceStatus', status)
status = robot.CStartReceiveMessage()
while True:
message = dict(robot.CReceiveMessage())
if message:
_thread.start_new_thread(chu_li_msg, (message['message'],))
time.sleep(0.1)

执行后报错:
ctypes.COMError: (-2147221008, '尚未调用 CoInitialize。', (None, None, None, 0, None))

根据提示,调用CoInitialize后,报错:
_ctypes.COMError: (-2147417842, '应用程序调用一个已为另一线程整理的接口。', (None, None, None, 0, None))

询问如何获取群成员昵称

大佬你好。
目前我这边需要由用户A 发出带有“@b …”的指令,使bot识别并找到目标成员B。因此需要有“获取群成员昵称”的功能🥹

我尝试了执行SQL语句,
“SELECT xx, MemberList, DisplayName FROM ChatRoom”
在ChatRoom这个表中,成员wxid和成员昵称都是由“^G”连接的一整个字符串。
问题出现在这里,这两个字符串分割后的列表并不能一一对应。不知道大佬对此有无解决办法。

我看过其他bot的运行,另一位大佬的做法是按照chatroomid以及wxid查找昵称(见https://bbs.pediy.com/thread-258557.htm

希望大佬可以完善这部分的功能,让bot更加完美。谢谢🙏

有群吗

尊敬的开源作者你好,感谢您的开源代码对我帮助很大,请问有交流群吗

您好,又遇到新的问题了,获取不到消息

微信版本:3.6.0.18
使用的python
代码如下:
robot = comtypes.client.CreateObject("WeChatRobot.CWeChatRobot")
robot.CStartRobotService()
myinfo = robot.CGetSelfInfo()
print(myinfo)
while True:
message = robot.CReceiveMessage()
print(message)

可以获取到myinfo,但是获取的message全是空的

请教下如何获取图片等文件的绝对路径?

接收消息中可以获取到文件、图片的相对路径,如 xx\FileStorage\Image\2022-06\827295d15ae74d65267c4899a31147dd.dat

但是绝对路径却没有显示,如:E:\WeChat Files\xx

看到其他人的处理方式是,获取AccInfo.dat文件路径的偏移,然后字符串截取获取绝对路径前缀。

但是我用CE挂载微信后查不到这个偏移,请问还有其他方式能获取到这个路径吗?

请问如何使用呢?

我按照以下步骤:
1、安装全新的wechat 3.7.0.26;
2、注册COM CWeChatRobot.exe /regserver ;
3、安装python 的扩展依赖;
4、启动Python 目录中的 test.py ;报错如图片

请问应该如何使用?
微信截图_20220617184150

正在学习,但是好像没起作用

用的python
微信版本是3.6.0.18
根据您的提示,注册了COM组件,方法是管理员运行CMD,CD到Release目录,执行【CWeChatRobot.exe /regserver】命令
python的代码如下:

robot = comtypes.client.CreateObject("WeChatRobot.CWeChatRobot")
print(robot.CGetSelfInfo())

输出的是一个空的dict,也就是输出的是:{}
不知道我做的对不对,请指教

问题来了

AttributeError: module 'comtypes.gen.WeChatRobotCOMLib' has no attribute 'IRobotEvent'

刚下载的大佬的更新,重新卸载,注册,然后运行就提示这个信息,求解?:)

主分支版本还是3.7.0.26吗

主分支还是3.7.0.26吗,为什么我在这个版本,AddPublicNoticeCallOffset的偏移在ida和x64dbg不是代码地址

好友状态检测报错

使用python调用COM接口检测好友状态时,检测到一半会报keyError: 178 (0xB2)的错,估计是内存变化了?我本人不是很懂逆向,希望作者赐教。
微信版本是3.6.0.18,大概检测40个好友左右就报错了,还有这个好友检测貌似会把自己黑名单里的人一起检测。

微信收到一条订阅号的消息后挂了,日志如下

Windows Server 2016 Datacenter [Build 10.0.14393]
CPU: Intel(R) Xeon(R) Platinum 8255C CPU @ 2.50GHz
微信 3.70.0030 2022/7/10 12:22:43

Type: EXCEPTION_ACCESS_VIOLATION
Error: Read address 0x03101000
Address: 6646AA84

CallStack:
DWeChatRobot + AA84
DWeChatRobot + AA10
KERNEL32 + 162C4
ntdll + 61B69
show in line:DWeChatRobot + AA84 DWeChatRobot + AA10 KERNEL32 + 162C4 ntdll + 61B69

Regs:
EAX=00000074, EBX=03110000, ECX=03100000, EDX=03101000
ESI=03100002, EDI=6646AA00, EBP=083AFDC8, ESP=083AF9C0, EIP=6646AA84

DWORD_PTRs at CS:EIP:
83028B66 856602C2 2BF575C0 89FAD1D6 518DEC55 801F0F02 00000000 83018B66
pid=00001B24 init_tid=00001814 crashtid=0000156C
DWORD_PTRs at teb:
083AE404 083B0000 083A7000 00000000 00001E00 00000000 00ABE000 00000000 00001B24 0000156C 00000000 0E2E4F00 00A5B000 00000012 00000000 00000000 00000000

最后收到的一条消息是:
{'time': '2022-07-10 12:22:38', 'type': 49, 'isSendMsg': 0, 'wxid': 'gh_8ec531665608', 'from': 'gh_8ec531665608', 'message': '\n\n\t\n\t\t<title></title>\n\t\t\n\t\t\n\t\t5\n\t\t1\n\t\t0\n\t\t\n\t\t0\n\t\t\n\t\t\n\t\t\n\t\t\t0\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t0\n\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t4\n\t\t\t\t\t<title></title>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t<pub_time>1657426957</pub_time>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\n\t\t\t\t\t<native_url />\n\t\t\t\t\t<del_flag>0</del_flag>\n\t\t\t\t\t0\n\t\t\t\t\t<play_length>0</play_length>\n\t\t\t\t\t<play_url></play_url>\n\t\t\t\t\t\n\t\t\t\t\t<template_op_type>0</template_op_type>\n\t\t\t\t\t<weapp_username></weapp_username>\n\t\t\t\t\t<weapp_path></weapp_path>\n\t\t\t\t\t<weapp_version>0</weapp_version>\n\t\t\t\t\t<weapp_state>0</weapp_state>\n\t\t\t\t\t<music_source>0</music_source>\n\t\t\t\t\t<pic_num>0</pic_num>\n\t\t\t\t\t<show_complaint_button>1</show_complaint_button>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t<pic_urls />\n\t\t\t\t\t<comment_topic_id>0</comment_topic_id>\n\t\t\t\t\t<cover_235_1></cover_235_1>\n\t\t\t\t\t<cover_1_1></cover_1_1>\n\t\t\t\t\t<cover_16_9></cover_16_9>\n\t\t\t\t\t<appmsg_like_type>0</appmsg_like_type>\n\t\t\t\t\t<video_width>0</video_width>\n\t\t\t\t\t<video_height>0</video_height>\n\t\t\t\t\t<is_pay_subscribe>0</is_pay_subscribe>\n\t\t\t\t\t<general_string></general_string>\n\t\t\t\t\t<finder_feed />\n\t\t\t\t\t<finder_live />\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t<template_header>\n\t\t\t\t<title></title>\n\t\t\t\t<title_color></title_color>\n\t\t\t\t<pub_time>1657426957</pub_time>\n\t\t\t\t<first_data></first_data>\n\t\t\t\t<first_color></first_color>\n\t\t\t\t<show_complaint_button>1</show_complaint_button>\n\t\t\t</template_header>\n\t\t\t<template_detail>\n\t\t\t\t<template_show_type>1</template_show_type>\n\t\t\t\t<text_content>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t</text_content>\n\t\t\t\t<line_content>\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t</line_content>\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t<weapp_username></weapp_username>\n\t\t\t\t\t\t<weapp_path></weapp_path>\n\t\t\t\t\t\t<op_type>0</op_type>\n\t\t\t\t\t\t<weapp_version>0</weapp_version>\n\t\t\t\t\t\t<weapp_state>0</weapp_state>\n\t\t\t\t\t\t<hint_word></hint_word>\n\t\t\t\t\t\t<is_rich_text>0</is_rich_text>\n\t\t\t\t\t\t<display_line_number>0</display_line_number>\n\t\t\t\t\t\t<general_string></general_string>\n\t\t\t\t\t\t<is_show_red_dot>0</is_show_red_dot>\n\t\t\t\t\t\t<ext_id></ext_id>\n\t\t\t\t\t\t<business_id></business_id>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<is_show_play_btn>0</is_show_play_btn>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t<show_type>0</show_type>\n\t\t\t\t\n\t\t\t\t<new_tmpl_type>0</new_tmpl_type>\n\t\t\t</template_detail>\n\t\t\t<forbid_forward>0</forbid_forward>\n\t\t\t<notify_msg />\n\t\t\n\t\t\n\t\t<template_id></template_id>\n\t\n\t\n\t\n\t\t0\n\t\t\n\t\t1\n\t\n\n', 'nickname': 'pushplus 推送加', 'alias': 'pushplus'}

详细日志如下
WeChat5dbe1b.txt
WeChat5dbe1bFMD5.txt

关于图片自动下载的功能

Snipaste_2022-07-18_14-28-54

修改了时间为 00:00-23:59,然后编译了重新注册了,自动下载还是不成功,必须手动点开图片,才会下载。
是不是还有哪里需要设置?呢

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.