[文档]Web微信协议

1.登录

1.1 获取uuid(get)

请求

https://login.wx.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=zh_CN&_=1476606163580

  1. appid: wx782c26e4c19acffb(固定值)
  2. redirect_rui: https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage(url编码)
  3. fun:new(固定值)
  4. lang: zh_CN(固定值)
  5. _: unix时间戳

响应

window.QRLogin.code = 200; window.QRLogin.uuid = "gf5Gk61zEA=="; 
window.QRLogin.uuid的值就是我们需要的uuid

1.2 获取二维码(get)

请求

https://login.weixin.qq.com/qrcode/gf5Gk61zEA== 
固定格式: https://login.weixin.qq.com/qrcode/{uuid}

二维码

https://login.weixin.qq.com/l/gf5Gk61zEA== 
固定格式: https://login.weixin.qq.com/l/{uuid}

1.3 等待登录扫描(get轮询)

请求

https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=gf5Gk61zEA==&tip=0&r=862560455&_=1476606163582

  1. loginicon:true
  2. uuid: uuid
  3. tip:0
  4. r:862560455(非必须)
  5. _: unix时间戳

响应

  1. window.code=408;// 登录超时(408)
  2. window.code=201;window.userAvatar='data:img/jpg;base64';// 扫描成功(201), userAvatar为用户头像
  3. window.code=200;// 确认登录(200), redirect_uri获取cookie
  4. window.redirect_uri="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=AYfheMIH6tt9EmcZ0DxCKF4a@qrticket_0&uuid=YeGrrvqmHQ==&lang=zh_CN&scan=1476606728";

1.4 登录后获取cookie(get)

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=AYfheMIH6tt9EmcZ0DxCKF4a@qrticket_0&uuid=YeGrrvqmHQ==&lang=zh_CN&scan=1476606728&fun=new&version=v2&lang=zh_CN
上一步的redirect_uri

响应

  1. <error>
  2. <ret>0</ret>
  3. <message></message>
  4. <skey>@crypt_14ae1b12_b73ba2673448154847d7007a2de3c53b</skey>
  5. <wxsid>jSsRlGGPyY7U8det</wxsid>
  6. <wxuin>566148615</wxuin>
  7. <pass_ticket>kUY4PSgKNy4eOlWI%2FwIBMVULe3KHPVyvDqw1%2B4DVVu9McVvE2d5fL7LFOfa4iYnk</pass_ticket>
  8. <isgrayscale>1</isgrayscale>
  9. </error>

skeywxsidwxuinpass_ticket和返回的cookie都需要保存(后面要用)


2.获取信息

2.1 初始化(post)

获取联系人信息, 公众号信息, 自己的账号信息

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r=862039733&lang=zh_CN&pass_ticket=kUY4PSgKNy4eOlWI%252FwIBMVULe3KHPVyvDqw1%252B4DVVu9McVvE2d5fL7LFOfa4iYnk

  • header 
    Content-Type:application/json;charset=UTF-8

  • content

  1. {
  2. "BaseRequest":{
  3. "Uin":"566148615",
  4. "Sid":"jSsRlGGPyY7U8det",
  5. "Skey":"@crypt_14ae1b12_b73ba2673448154847d7007a2de3c53b",
  6. "DeviceID":"e119795675188164"
  7. }
  8. }
  1. Uin,Sid,Skey:登录后获取的xml中的数据
  2. DeviceID: e +随机数

响应

  1. {
  2. "BaseResponse":{
  3. "Ret":0,
  4. "ErrMsg":""
  5. },
  6. "Count":11,
  7. "ContactList":[...],//联系人信息, 公众号信息, 群
  8. "SyncKey":{
  9. "Count":4,
  10. "List":[
  11. {
  12. "Key":1,
  13. "Val":635705559
  14. },
  15. ...//同步key值, 下次请求时要写到上
  16. ]
  17. },
  18. "User":{
  19. "Uin": xxx,
  20. "UserName": xxx,
  21. "NickName": xxx,
  22. "HeadImgUrl": xxx,
  23. "RemarkName":"",
  24. "PYInitial":"",
  25. "PYQuanPin":"",
  26. "RemarkPYInitial":"",
  27. "RemarkPYQuanPin":"",
  28. "HideInputBarFlag":0,
  29. "StarFriend":0,
  30. "Sex":1,
  31. "Signature":"Apt-get install B",
  32. "AppAccountFlag":0,
  33. "VerifyFlag":0,
  34. "ContactFlag":0,
  35. "WebWxPluginSwitch":0,
  36. "HeadImgFlag":1,
  37. "SnsFlag":17
  38. },
  39. "ChatSet":"xxx",
  40. "SKey":"@crypt_14ae1b12_b73ba2673448154847d7007a2de3c53b",
  41. "ClientVersion":369302288,
  42. "SystemTime":1476608977,
  43. "GrayScale":1,
  44. "InviteStartCount":40,
  45. "MPSubscribeMsgCount":7,
  46. "ClickReportInterval":600000
  47. }

2.2 标记已读(post)

客户端读取消息后要发起请求, 告诉服务器消息已经读取, 从而通知手机客户端

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxstatusnotify?pass_ticket=ZDJfLCa0EAKrLn2CdD7MDl%252B54GwlW0IEiwYOsm6II%252F8W57y0pF1F8fqS%252B5z4INU5

  1. pass_ticket 登录请求返回的xml中的值
  • header 
    Content-Type:application/json;charset=UTF-8

  • content

  1. {
  2. "BaseRequest":{
  3. "Uin":566148615,
  4. "Sid":"EKjoZCMRIvrY7NIP",
  5. "Skey":"@crypt_14ae1b12_f59314a579c67b15f838d09feb79c17f",
  6. "DeviceID":"e098855372553243"
  7. },
  8. "Code":3,
  9. "FromUserName":自己ID,
  10. "ToUserName":自己ID,
  11. "ClientMsgId":时间戳
  12. }

响应

  1. {
  2. "BaseResponse":{
  3. "Ret":0,
  4. "ErrMsg":""
  5. },
  6. "MsgID":"1525762281689643050"
  7. }

2.3 获取联系人信息列表(get)

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact?pass_ticket=ZDJfLCa0EAKrLn2CdD7MDl%252B54GwlW0IEiwYOsm6II%252F8W57y0pF1F8fqS%252B5z4INU5&r=1476608979549&seq=0&skey=@crypt_14ae1b12_f59314a579c67b15f838d09feb79c17f

  1. pass_ticket 登录请求中返回xml中获取
  2. seq 0(固定值)
  3. skey 初始化请求中获取

响应

  1. {
  2. "BaseResponse":{
  3. "Ret":0,
  4. "ErrMsg":""
  5. },
  6. "MemberCount":637,
  7. "MemberList":[
  8. {
  9. "Uin":0,
  10. "UserName": xxx,
  11. "NickName":"LbbNiu",
  12. "HeadImgUrl": xxx,
  13. "ContactFlag":3,
  14. "MemberCount":0,
  15. "MemberList":[],
  16. "RemarkName":"",
  17. "HideInputBarFlag":0,
  18. "Sex":0,
  19. "Signature":"IT全才-LbbNiu",
  20. "VerifyFlag":8,
  21. "OwnerUin":0,
  22. "PYInitial":"LbbNiu",
  23. "PYQuanPin":"LbbNiu",
  24. "RemarkPYInitial":"",
  25. "RemarkPYQuanPin":"",
  26. "StarFriend":0,
  27. "AppAccountFlag":0,
  28. "Statues":0,
  29. "AttrStatus":0,
  30. "Province":"",
  31. "City":"",
  32. "Alias":"Urinxs",
  33. "SnsFlag":0,
  34. "UniFriend":0,
  35. "DisplayName":"",
  36. "ChatRoomId":0,
  37. "KeyWord":"gh_",
  38. "EncryChatRoomId":""
  39. }
  40. ....//联系人列表
  41. ],
  42. "Seq":0
  43. }

2.4 获取聊天会话列表(post)

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxbatchgetcontact?type=ex&r=1476608979648&pass_ticket=ZDJfLCa0EAKrLn2CdD7MDl%252B54GwlW0IEiwYOsm6II%252F8W57y0pF1F8fqS%252B5z4INU5

  1. type ex(固定值)
  2. r 当前时间戳
  3. pass_ticket 登录请求中返回xml中获取
  • header 
    Content-Type:application/json;charset=UTF-8

  • content

  1. {
  2. "BaseRequest":{
  3. "Uin":566148615,
  4. "Sid":"EKjoZCMRIvrY7NIP",
  5. "Skey":"@crypt_14ae1b12_f59314a579c67b15f838d09feb79c17f",
  6. "DeviceID":"e316575061818116"
  7. },
  8. "Count":7,
  9. "List":[
  10. {
  11. "UserName":"@@e2da072e5beda58413f788fd2978b6f9fbde2ba337a71f02e1458958fcdb8371",//去要获取的群UserName
  12. "ChatRoomId":""
  13. }…
  14. ]
  15. }

响应

  1. {
  2. "BaseResponse":{
  3. "Ret":0,
  4. "ErrMsg":""
  5. },
  6. "Count":7,
  7. "ContactList":[
  8. ]
  9. }

2.5 同步刷新(get轮询)

请求

https://webpush.wx.qq.com/cgi-bin/mmwebwx-bin/synccheck?r=1476611147442&skey=%40crypt_14ae1b12_f59314a579c67b15f838d09feb79c17f&sid=EKjoZCMRIvrY7NIP&uin=566148615&deviceid=e673682280871456&synckey=1_643606091%7C2_643606203%7C3_643606171%7C11_643605834%7C13_643590001%7C201_1476611120%7C1000_1476610779%7C1001_1476590971%7C1004_1475896795&_=1476611120940

r 时间戳

skey 初始化信息中获取

sid 登录请求中返回xml中获取

uin 登录请求中返回xml中获取

synckey 初始化信息中获取

deviceid 设备id

_ 时间戳

响应

window.synccheck={retcode:"0",selector:"2"}

retcode:

0正常

1100失败/登出微信

selector:

0正常

2新的消息

4通过时发现,删除好友

6删除时发现和对方通过好友验证

7进入/离开聊天界面(可能没有了)

2.6 获取消息(post, cookie)

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsync?sid=2qui+CC4YTiiI2zk&skey=@crypt_14ae1b12_1bb5e370393b8cd502919825fe9dbfc0&lang=zh_CN&pass_ticket=tM909DkHH8fXLR7hhwIgn9MqmSuCxx6%252BcdaA9qE203zxP7fMT%252FtxPlY7opbnnVE2

pass_ticket 登录请求中返回xml中获取

r 时间戳

skey 初始化信息中获取

sid 登录请求中返回xml中获取

lang zh_CN

  • header 
    Content-Type:application/json;charset=UTF-8

  • content

{

"BaseRequest":{

"Uin":566148615,

"Sid":"2qui+CC4YTiiI2zk",

"Skey":"@crypt_14ae1b12_1bb5e370393b8cd502919825fe9dbfc0",

"DeviceID":"e151332185497293"

},

"SyncKey":{

"Count":9,

"List":[

{"Key":1,"Val":643606091},

{"Key":2,"Val":643606236},

{"Key":3,"Val":643606171},

{"Key":11,"Val":643606232},

{"Key":13,"Val":643590001},

{"Key":203,"Val":1476612126},

{"Key":1000,"Val":1476610779},

{"Key":1001,"Val":1476590971},

{"Key":1004,"Val":1475896795}

]

},

"rr":856481324

}

响应

{

"BaseResponse":{

"Ret":0,

"ErrMsg":""

},

"AddMsgCount":1,

"AddMsgList":[

{

"MsgId":"8410419333108271670",

"FromUserName":"@595d9f44c64e2f480baa0d6430ca58ef053a768daa6d7b3fcc4bece244bcbce3",

"ToUserName":"@e5403f77c2193da671790c1a242d0b43ac6f570e5047993ef745d13d6376b57b",

"MsgType":51,

"Content":"&lt;msg&gt;<br/>&lt;op id='5'&gt;<br/>&lt;username&gt;wxid_e602if1itlm821&lt;/username&gt;<br/>&lt;/op&gt;<br/>&lt;/msg&gt;",

"Status":3,

"ImgStatus":1,

"CreateTime":1476612570,

"VoiceLength":0,

"PlayLength":0,

"FileName":"",

"FileSize":"",

"MediaId":"",

"Url":"",

"AppMsgType":0,

"StatusNotifyCode":5,

"StatusNotifyUserName":"@e5403f77c2193da671790c1a242d0b43ac6f570e5047993ef745d13d6376b57b",

"RecommendInfo":{

"UserName":"",

"NickName":"",

"QQNum":0,

"Province":"",

"City":"",

"Content":"",

"Signature":"",

"Alias":"",

"Scene":0,

"VerifyFlag":0,

"AttrStatus":0,

"Sex":0,

"Ticket":"",

"OpCode":0

},

"ForwardFlag":0,

"AppInfo":{

"AppID":"",

"Type":0

},

"HasProductId":0,

"Ticket":"",

"ImgHeight":0,

"ImgWidth":0,

"SubMsgType":0,

"NewMsgId":8410419333108272000

}

],

"ModContactCount":0,

"ModContactList":[],

"DelContactCount":0,

"DelContactList":[],

"ModChatRoomMemberCount":0,

"ModChatRoomMemberList":[],

"Profile":{

"BitFlag":0,

"UserName":{

"Buff":""

},

"NickName":{

"Buff":""

},

"BindUin":0,

"BindEmail":{

"Buff":""

},

"BindMobile":{

"Buff":""

},

"Status":0,

"Sex":0,

"PersonalCard":0,

"Alias":"",

"HeadImgUpdateFlag":0,

"HeadImgUrl":"",

"Signature":""

},

"ContinueFlag":0,

"SyncKey":{

"Count":10,

"List":[

{

"Key":1,

"Val":643606091

}

.....//同步key

]

},

"SKey":"",

"SyncCheckKey":{

"Count":10,

"List":[

{

"Key":1,

"Val":643606091

}

.....//同步检测消息key

]

}

}

2.7 状态报告(post)

仅用于统计

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxstatreport?fun=new&lang=zh_CN

  • header 
    Content-Type:application/json;charset=UTF-8
  • content

3.消息

3.1 文字消息(post)

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsg?lang=zh_CN&pass_ticket=tM909DkHH8fXLR7hhwIgn9MqmSuCxx6%252BcdaA9qE203zxP7fMT%252FtxPlY7opbnnVE2

lang zh_CN

pass_ticket 登录后返回信息中获取

  • header 
    Content-Type:application/json;charset=UTF-8

  • content

{

"BaseRequest":{

"Uin":566148615,

"Sid":"2qui+CC4YTiiI2zk",

"Skey":"@crypt_14ae1b12_1bb5e370393b8cd502919825fe9dbfc0",

"DeviceID":"e784205590563506"

},

"Msg":{

"Type":1,

"Content":"@啊啊啊 啊啊啊啊啊啊",

"FromUserName":"@595d9f44c64e2f480baa0d6430ca58ef053a768daa6d7b3fcc4bece244bcbce3",

"ToUserName":"@@9e1c0ab62b5ab222835786c00192fb1e10c75f8082c245d360ac6a6bd2efe2df",

"LocalID":"14766146756340722",

"ClientMsgId":"14766146756340722"

},

"Scene":0

}

Type:1(文字消息),

Content:要发送的消息,

FromUserName:自己ID,

ToUserName:好友ID,

LocalID:与clientMsgId相同,

ClientMsgId:时间戳左移4位随后补上4位随机数

响应

{

"BaseResponse":{

"Ret":0,

"ErrMsg":""

},

"MsgID":"4527210051674039705",

"LocalID":"14766146756340722"

}

3.2 表情消息(post)

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendemoticon?fun=sys&lang=zh_CN

  • header 
    Content-Type:application/json;charset=UTF-8

  • content

{

"BaseRequest":{

"Uin":566148615,

"Sid":"2qui+CC4YTiiI2zk",

"Skey":"@crypt_14ae1b12_1bb5e370393b8cd502919825fe9dbfc0",

"DeviceID":"e961665475339031"

},

"Msg":{

"Type":47,

"EmojiFlag":2,

"EMoticonMd5":"44682e637b75a3f5d6747d61dbd23a15",

"FromUserName":"@595d9f44c64e2f480baa0d6430ca58ef053a768daa6d7b3fcc4bece244bcbce3",

"ToUserName":"@e5403f77c2193da671790c1a242d0b43ac6f570e5047993ef745d13d6376b57b",

"LocalID":"14766150190560991",

"ClientMsgId":"14766150190560991"

},

"Scene":0

}

Type:47 emoji消息,

EmojiFlag:2,

MediaId:表情上传后的媒体ID,

FromUserName:自己ID,

ToUserName:好友ID,

LocalID:与clientMsgId相同,

ClientMsgId:时间戳左移4位随后补上4位随机数

响应

{

"BaseResponse":{

"Ret":0,

"ErrMsg":""

},

"MsgID":"1604548346807369725",

"LocalID":"14766150190560991"

}

3.3 图片消息

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsgimg?fun=async&f=json&lang=zh_CN

  • header 
    Content-Type:application/json;charset=UTF-8

  • content

{

"BaseRequest":{

"Uin":566148615,

"Sid":"2qui+CC4YTiiI2zk",

"Skey":"@crypt_14ae1b12_1bb5e370393b8cd502919825fe9dbfc0",

"DeviceID":"e374531581999650"

},

"Msg":{

"Type":3,

"MediaId":"@crypt_4d268bd0",

"FromUserName":"@595d9f44c64e2f480baa0d6430ca58ef053a768daa6d7b3fcc4bece244bcbce3",

"ToUserName":"@e5403f77c2193da671790c1a242d0b43ac6f570e5047993ef745d13d6376b57b",

"LocalID":"14766158484990338",

"ClientMsgId":"14766158484990338"

},

"Scene":0

}

Type:3媒体消息,

MediaId:表情上传后的媒体ID,

FromUserName:自己ID,

ToUserName:好友ID,

LocalID:与clientMsgId相同,

ClientMsgId:时间戳左移4位随后补上4位随机数

响应

{

"BaseResponse":{

"Ret":0,

"ErrMsg":""

},

"MsgID":"6722400141243782346",

"LocalID":"14766158484990338"

}

3.4 文件消息(post)

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendappmsg?fun=async&f=json

  • header 
    Content-Type:application/json;charset=UTF-8

  • content

{

"BaseRequest":{

"Uin":566148615,

"Sid":"NO0RlTCXvpBGaag7",

"Skey":"@crypt_14ae1b12_3bdec7023595f68f9900b5d9d7d30b75",

"DeviceID":"e984332143788024"

},

"Msg":{

"Type":6,

"Content":"<appmsg appid='wxeb7ec651dd0aefa9' sdkver=''><title>top10.csv</title><des></des><action></action><type>6</type><content></content><url></url><lowurl></lowurl><appattach><totallen>1760</totallen><attachid>@crypt_f672a24d_9d9c7d6a3b5ec058db1e6eb3d7c66917ede2e615535e9659365322de110ac41877d9a3b878ed82c0959f9b4602ef6e6d784ae853ab4e242d201cb19b9ee255a337f884eab998c5c43e7d433c01f14c91</attachid><fileext>csv</fileext></appattach><extinfo></extinfo></appmsg>",

"FromUserName":"@257b5aa7fb7b1672afb889be97197478cf618d9bab2b470cf767a61ae9f7f321",

"ToUserName":"@@ab3e18c922f8ab162762f6da231236137ca52871419ec9cafc2421607e82e1ca",

"LocalID":"14767614604200494",

"ClientMsgId":"14767614604200494"

},

"Scene":0

}

响应

{

"BaseResponse":{

"Ret":0,

"ErrMsg":""

},

"MsgID":"6923581840474342573",

"LocalID":"14767614604200494"

}

3.5 上传附件(post)

请求

https://file.wx.qq.com/cgi-bin/mmwebwx-bin/webwxuploadmedia?f=json

  • header 
    Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryoWmrkW7MIGyBhlOt

  • content

id 文件id

name 文件名

type 文件类型

lastModifieDate 最后修改时间

size 文件大小

mediatype 文件媒体类型 doc pic

uploadmediarequest(json字符串)

UploadType上传类型2

BaseRequest

Uin登录中获得

Sid登录中获得

Skey登录中获得

DeviceID设备id

ClientMediaId文件本地消息id

TotalLen文件总大小

StartPos开始位置

DataLen数据长度

MediaType媒体类型4

FromUserName发送用户id

ToUserName接受用户id

FileMd5文件md5

webwx_data_ticket cookie中信息

pass_ticket

filename 文件流

响应

{

"BaseResponse":{

"Ret":0,

"ErrMsg":""

}

,

"MediaId":"@crypt_6084141c_c73c046b750fd6e3e82d0aba4839b89b30851de7eace0446a4f73b524e3b43d41b24048e9c10cf7ba3387d04d63e6bd75bf8e3237acdddda5d4e3ede176617370573ebb2f820595076c55906a50a50a7",

"StartPos":25929,

"CDNThumbImgHeight":0,

"CDNThumbImgWidth":0

}

3.6 图片消息

3.6.1 消息图片(get)

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetmsgimg?&MsgID=6829659093985341608&skey=%40crypt_14ae1b12_1bb5e370393b8cd502919825fe9dbfc0&type=slave

MsgID:消息ID

type: slave 略缩图or为空时加载原图

skey: xxx

3.6.2 联系人头像(get)

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgeticon?seq=637275253&username=@aa357b7fc1ccb2e77a2632a6251fb6de2c5dd1c0ec503f04b25cfd34c256956a&skey=@crypt_14ae1b12_1bb5e370393b8cd502919825fe9dbfc0

seq:数字,可为空

username: ID

skey: xxx

3.6.3 群头像(get)

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetheadimg?seq=0&username=@@eca74ece82ad7947d262c59d53ab5d001e8776374141377cc025956b44bd1c03&skey=@crypt_14ae1b12_1bb5e370393b8cd502919825fe9dbfc0

seq:数字,可为空

username:群ID

skey: xxx

3.7 多媒体接口

3.7.1 语音消息(get)

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetvoice?msgid=6181125285738858128&skey=@crypt_14ae1b12_1bb5e370393b8cd502919825fe9dbfc0

msgid:消息ID

skey: xxx

3.7.2 视频消息(get)

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetvideo?msgid=114757855447263581&skey=%40crypt_14ae1b12_1bb5e370393b8cd502919825fe9dbfc0

msgid:消息ID

skey: xxx

3.7.3 其他文件(get)

请求

https://file.wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetmedia?sender=@@aa4d90eee1984452cfacf8b510ce6547af58aa4fe34fe567787c716fd262d42c&mediaid=@crypt_3d1bb9c7_7f07116cc9b86e9d8237ad938293eee8a820acfa35e7bdaa41a03fc2fb17b60a4c6da7f967714259dec587505a1b55b10e61e301f733ec718167d8d355f8809257d3fbf382d775e2872e552957e894d52060d8766133214a58ea017e6416216c9f6f1d6056e5b22fe6c78a50efcf384969a7e1b96f348f581853b41be070c16ea4d510b8d10d747a3fc5a3909e1ed2deea43aa6db558c6dd58d453e8d6235d9f6a7c7bc0eb752fb5aee59568ab8de8ff38e0064b827765ae847d6a3503fba9a970006d18f0092a12811ccaec57c071bd&filename=51CTO%E4%B8%8B%E8%BD%BD-MySQL%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98%E4%B8%8E%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1.pdf&fromuser=1443149207&pass_ticket=td%252BZEx1ANBEB8wz%252BxjYhotl3fChIto%252FyC4w%252FNHMopoqOP8Eya9%252FivEs2lsPEDqEj&webwx_data_ticket=gSc8PoV98Y4y98pOsP6hmcpj

sender 发送者UserName

mediaid 媒体id

filename 文件名

fromuser 接受者UserName

pass_ticket 登录返回信息中

webwx_data_ticket cookie中信息

3.8 账号类型

  • 个人账号 以@开头, 例如: @xxx
  • 群聊 以@@开头, 例如: @@xxx
  • 公众号/服务号 以@开头, 但其VerifyFlag & 8 != 0

VerifyFlag:

一般公众号/服务号:8

微信自家的服务号:24

微信官方账号微信团队:56

  • 特殊账号 有特殊的ID(文件传输助手之类)

filehelper, newsapp, fmessage, weibo, qqmail, fmessage, tmessage, qmessage, qqsync, floatbottle, lbsapp, shakeapp, medianote, qqfriend, readerapp, blogapp, facebookapp, masssendapp, meishiapp, feedsapp, voip, blogappweixin, weixin, brandsessionholder, weixinreminder, officialaccounts, notification_messages, wxitil, userexperience_alarm, notification_messages

3.9 消息类型

3.9.1 一般格式

{

"FromUserName":"",

"ToUserName":"",

"Content":"",

"StatusNotifyUserName":"",

"ImgWidth":0,

"PlayLength":0,

"RecommendInfo":{...},

"StatusNotifyCode":4,

"NewMsgId":"",

"Status":3,

"VoiceLength":0,

"ForwardFlag":0,

"AppMsgType":0,

"Ticket":"",

"AppInfo":{...},

"Url":"",

"ImgStatus":1,

"MsgType":1,

"ImgHeight":0,

"MediaId":"",

"MsgId":"",

"FileName":"",

"HasProductId":0,

"FileSize":"",

"CreateTime":1454602196,

"SubMsgType":0

}

MsgType:

1文本消息

3图片消息

34语音消息

37 VERIFYMSG 好友验证消息

40 POSSIBLEFRIEND_MSG

42共享名片

43视频通话消息

47动画表情

48位置消息

49分享链接

50 VOIPMSG

51微信初始化消息

52 VOIPNOTIFY

53 VOIPINVITE

62小视频

9999 SYSNOTICE

10000系统消息

10002撤回消息

3.9.2 微信初始化消息

MsgType:51

FromUserName:自己ID

ToUserName:自己ID

StatusNotifyUserName:最近联系的联系人ID

Content:

<msg>

<op id='4'>

<username>

// 最近联系的联系人

filehelper,xxx@chatroom,wxid_xxx,xxx,...

</username>

<unreadchatlist>

<chat>

<username>

// 朋友圈

MomentsUnreadMsgStatus

</username>

<lastreadtime>

1454502365

</lastreadtime>

</chat>

</unreadchatlist>

<unreadfunctionlist>

// 未读的功能账号消息, 群发助手, 漂流瓶等

</unreadfunctionlist>

</op>

</msg>

3.9.3 文本消息

MsgType:1

FromUserName:发送方ID

ToUserName:接收方ID

Content:消息内容

图片消息

MsgType:3

FromUserName:发送方ID

ToUserName:接收方ID

MsgId:用于获取图片

Content:

<msg>

<img length="6503" hdlength="0"/>

<commenturl></commenturl>

</msg>

3.9.4 小视频消息

MsgType:62

FromUserName:发送方ID

ToUserName:接收方ID

MsgId:用于获取小视频

Content:

<msg>

<img length="6503" hdlength="0"/>

<commenturl></commenturl>

</msg>

3.9.5 地理位置消息

MsgType:1

FromUserName:发送方ID

ToUserName:接收方ID

Content: http://weixin.qq.com/cgi-bin/redirectforward?args=xxx

// 属于文本消息, 只不过内容是一个跳转到地图的链接

3.9.6 名片消息

MsgType:42

FromUserName:发送方ID

ToUserName:接收方ID

Content:

<?xml version="1.0"?>

<msg bigheadimgurl="" smallheadimgurl="" username="" nickname="" shortpy=""alias="" imagestatus="3" scene="17" province="" city="" sign="" sex="1" certflag="0" certinfo="" brandIconUrl="" brandHomeUrl="" brandSubscriptConfigUrl="" brandFlags="0" regionCode=""/>

RecommendInfo:

{

"UserName":"xxx",// ID

"Province":"xxx",

"City":"xxx",

"Scene":17,

"QQNum":0,

"Content":"",

"Alias":"xxx",// 微信号

"OpCode":0,

"Signature":"",

"Ticket":"",

"Sex":0,// 1:男, 2:女

"NickName":"xxx",// 昵称

"AttrStatus":4293221,

"VerifyFlag":0

}

3.9.7 语音消息

MsgType:34

FromUserName:发送方ID

ToUserName:接收方ID

MsgId:用于获取语音

Content:

<msg>

<voicemsg endflag="1" cancelflag="0" forwardflag="0" voiceformat="4" voicelength="1580" length="2026" bufid="216825389722501519" clientmsgid="49efec63a9774a65a932a4e5fcd4e923filehelper174_1454602489" fromusername=""/>

</msg>

3.9.8 动画表情

MsgType:47

FromUserName:发送方ID

ToUserName:接收方ID

Content:

<msg>

<emoji fromusername ="" tousername ="" type="2"

idbuffer="media:0_0" md5="e68363487d8f0519c4e1047de403b2e7"

len ="86235"

productid="com.tencent.xin.emoticon.bilibili"

androidmd5="e68363487d8f0519c4e1047de403b2e7"

androidlen="86235"

s60v3md5 ="e68363487d8f0519c4e1047de403b2e7"

s60v3len="86235"

s60v5md5 ="e68363487d8f0519c4e1047de403b2e7" s60v5len="86235"

cdnurl ="http://emoji.qpic.cn/wx_emoji/eFygWtxcoMF8M0oCCsksMA0gplXAFQNpiaqsmOicbXl1OC4Tyx18SGsQ/"

designerid =""

thumburl ="http://mmbiz.qpic.cn/mmemoticon/dx4Y70y9XctRJf6tKsy7FwWosxd4DAtItSfhKS0Czr56A70p8U5O8g/0"

encrypturl ="http://emoji.qpic.cn/wx_emoji/UyYVK8GMlq5VnJ56a4GkKHAiaC266Y0me0KtW6JN2FAZcXiaFKccRevA/"

aeskey="a911cc2ec96ddb781b5ca85d24143642">

</emoji>

<gameext type="0" content="0"></gameext>

</msg>

3.9.9 普通链接或应用分享消息

MsgType:49

AppMsgType:5

FromUserName:发送方ID

ToUserName:接收方ID

Url:链接地址

FileName:链接标题

Content:

<msg>

<appmsg appid="" sdkver="0">

<title></title>

<des></des>

<type>5</type>

<content></content>

<url></url>

<thumburl></thumburl>

...

</appmsg>

<appinfo>

<version></version>

<appname></appname>

</appinfo>

</msg>

3.9.10 音乐链接消息

MsgType:49

AppMsgType:3

FromUserName:发送方ID

ToUserName:接收方ID

Url:链接地址

FileName:音乐名

AppInfo:// 分享链接的应用

{

Type:0,

AppID: wx485a97c844086dc9

}

Content:

<msg>

<appmsg appid="wx485a97c844086dc9" sdkver="0">

<title></title>

<des></des>

<action></action>

<type>3</type>

<showtype>0</showtype>

<mediatagname></mediatagname>

<messageext></messageext>

<messageaction></messageaction>

<content></content>

<contentattr>0</contentattr>

<url></url>

<lowurl></lowurl>

<dataurl>

http://ws.stream.qqmusic.qq.com/C100003i9hMt1bgui0.m4a?vkey=6867EF99F3684&amp;guid=ffffffffc104ea2964a111cf3ff3edaf&amp;fromtag=46

</dataurl>

<lowdataurl>

http://ws.stream.qqmusic.qq.com/C100003i9hMt1bgui0.m4a?vkey=6867EF99F3684&amp;guid=ffffffffc104ea2964a111cf3ff3edaf&amp;fromtag=46

</lowdataurl>

<appattach>

<totallen>0</totallen>

<attachid></attachid>

<emoticonmd5></emoticonmd5>

<fileext></fileext>

</appattach>

<extinfo></extinfo>

<sourceusername></sourceusername>

<sourcedisplayname></sourcedisplayname>

<commenturl></commenturl>

<thumburl>

http://imgcache.qq.com/music/photo/album/63/180_albumpic_143163_0.jpg

</thumburl>

<md5></md5>

</appmsg>

<fromusername></fromusername>

<scene>0</scene>

<appinfo>

<version>29</version>

<appname>摇一摇搜歌</appname>

</appinfo>

<commenturl></commenturl>

</msg>

3.9.11 群消息

MsgType:1

FromUserName:@@xxx

ToUserName:@xxx

Content:

@xxx:<br/>xxx

3.9.12 红包消息

MsgType:49

AppMsgType:2001

FromUserName:发送方ID

ToUserName:接收方ID

Content:未知

网页版(目前走的是系统消息)

MsgType:10000

FromUserName:发送方ID

ToUserName:自己ID

Content:

"你已添加了 xxx , 现在可以开始聊天了。"

"如果陌生人主动添加你为朋友, 请谨慎核实对方身份。"

"收到红包, 请在手机上查看"


4.好友操作

4.1 添加好友和通过好友验证(post)

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxverifyuser?r=1476779339614&lang=zh_CN&pass_ticket=td%252BZEx1ANBEB8wz%252BxjYhotl3fChIto%252FyC4w%252FNHMopoqOP8Eya9%252FivEs2lsPEDqEj

  • header 
    Content-Type:application/json;charset=UTF-8

  • content

    • 添加好友

{

"BaseRequest":{

"Uin":1443149207,

"Sid":"HqU75NIXRJ6qqu8t",

"Skey":"@crypt_d9da2d81_f3a62e80c16e61ad660dffd14e0ef72c",

"DeviceID":"e799452821014375"

},

"Opcode":2,

"VerifyUserListSize":1,

"VerifyUserList":[

{

"Value":"@2cbb226c459cc5203aa991942f41e19820f5ef3ccceb2dece598412f36406d1f","VerifyUserTicket":""

}

],

"VerifyContent":"我是lbbniu.cn",

"SceneListCount":1,

"SceneList":[

33

],

"skey":"@crypt_d9da2d81_f3a62e80c16e61ad660dffd14e0ef72c"

}

- 通过好友验证

{

"BaseRequest":{

"Uin":1443149207,

"Sid":"HqU75NIXRJ6qqu8t",

"Skey":"@crypt_d9da2d81_f3a62e80c16e61ad660dffd14e0ef72c",

"DeviceID":"e606224692711308"

},

"Opcode":3,

"VerifyUserListSize":1,

"VerifyUserList":[

{

"Value":"@2cbb226c459cc5203aa991942f41e19820f5ef3ccceb2dece598412f36406d1f",

"VerifyUserTicket":"v2_9d2e1b01ee6de582a237f6369a6746c84d3a072b48bf36f152c5c947505e871189cafa09748e05bab27caf812a8f3a12d51da3dceda3cab5f52a406ec124a4a9@stranger"

}

],

"VerifyContent":"",

"SceneListCount":1,

"SceneList":[

33

],

"skey":"@crypt_d9da2d81_f3a62e80c16e61ad660dffd14e0ef72c"

}

响应

{

"BaseResponse":{

"Ret":0,

"ErrMsg":""

}

}

4.2 好友验证消息体

<msgfromusername="liubingbing889129"encryptusername="v1_18874657c313914eff3c00cfd89275a4fa5c0753c73a63d78b893dd29f814e0e2a34dabe550e3d4199b0c4d518d3019b@stranger"fromnickname="LbbNiu"content="验证消息内容"shortpy="LBBNIU"imagestatus="3"scene="14"country="CN"province="Beijing"city="Chaoyang"sign=""percard="1"sex="1"alias="lbbniu"weibo="http://t.qq.com/lbbniu"weibonickname="微博昵称"albumflag="3"albumstyle="0"albumbgimgid=""snsflag="17"snsbgimgid="http://mmsns.qpic.cn/mmsns/4376ae1e0cf0ccced233def9ad1560d0dec29d64941ab85a901c0129f89f98ce9b8524263f1c393a874098cc9f1e4961624ddae970ce1bc0/0"snsbgobjectid="12152681488304050449"mhash="c07f008cf5e3f34415e4baa355fb4f47"mfullhash="c07f008cf5e3f34415e4baa355fb4f47"bigheadimgurl="http://wx.qlogo.cn/mmhead/ver_1/qFZwXv2etMCTcs3RUKDOlmw9GQyMfAdYcbQyd5cH9SssCdTLFmjNdZyLkZ14DdpAUv9qwibl2icia1M6Mng30Adibw/0"smallheadimgurl="http://wx.qlogo.cn/mmhead/ver_1/qFZwXv2etMCTcs3RUKDOlmw9GQyMfAdYcbQyd5cH9SssCdTLFmjNdZyLkZ14DdpAUv9qwibl2icia1M6Mng30Adibw/132"ticket="v2_9d2e1b01ee6de582a237f6369a6746c84d3a072b48bf36f152c5c947505e871189cafa09748e05bab27caf812a8f3a12d51da3dceda3cab5f52a406ec124a4a9@stranger"opcode="2"googlecontact=""qrticket=""chatroomusername="1656114910@chatroom"sourceusername=""sourcenickname="">

<brandlistcount="0"ver="652639419"></brandlist>

</msg>

"RecommendInfo":{

"UserName":"@2cbb226c459cc5203aa991942f41e19820f5ef3ccceb2dece598412f36406d1f",

"NickName":"LbbNiu",

"QQNum":0,

"Province":"",

"City":"æ",

"Content":"",

"Signature":"",

"Alias":"lbbniu",

"Scene":14,

"VerifyFlag":0,

"AttrStatus":4305791,

"Sex":1,

"Ticket":"v2_9d2e1b01ee6de582a237f6369a6746c84d3a072b48bf36f152c5c947505e871189cafa09748e05bab27caf812a8f3a12d51da3dceda3cab5f52a406ec124a4a9@stranger",

"OpCode":2

}

4.3 创建群聊(post)

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxcreatechatroom?r=1476618448303&lang=zh_CN

  • header 
    Content-Type:application/json;charset=UTF-8

  • content

{

"MemberCount":3,

"MemberList":[

{

"UserName":"@fe20084fb8e3b488f49d3df2bf3ec2837daeb468abfe62a48ef39a6e407cab0e"

},

....

],

"Topic":"",

"BaseRequest":{

"Uin":1443149207,

"Sid":"HqU75NIXRJ6qqu8t",

"Skey":"@crypt_d9da2d81_f3a62e80c16e61ad660dffd14e0ef72c",

"DeviceID":"e280173725621646"

}

}

  1. UserName初始化接口中获取

响应

{

"BaseResponse":{

"Ret":0,

"ErrMsg":"Everything is OK"

},

"Topic":"",

"PYInitial":"",

"QuanPin":"",

"MemberCount":3,

"MemberList":[

{

"Uin":0,

"UserName":"@fe20084fb8e3b488f49d3df2bf3ec2837daeb468abfe62a48ef39a6e407cab0e",

"NickName":"111111",

"AttrStatus":0,

"PYInitial":"",

"PYQuanPin":"",

"RemarkPYInitial":"",

"RemarkPYQuanPin":"",

"MemberStatus":0,

"DisplayName":"",

"KeyWord":""

},

...

],

"ChatRoomName":"@@45340ba1e520285af196cef99d2f41a2bdb5cc568569efa178354f08eb863d00",

"BlackList":""

}

4.4 群聊踢人

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxupdatechatroom?fun=delmember

  • header 
    Content-Type:application/json;charset=UTF-8

  • content

{

"DelMemberList":"@2cbb226c459cc5203aa991942f41e19820f5ef3ccceb2dece598412f36406d1f",

"ChatRoomName":"@@45340ba1e520285af196cef99d2f41a2bdb5cc568569efa178354f08eb863d00",

"BaseRequest":{

"Uin":1443149207,

"Sid":"HqU75NIXRJ6qqu8t",

"Skey":"@crypt_d9da2d81_f3a62e80c16e61ad660dffd14e0ef72c",

"DeviceID":"e934789096108643"

}

}

DelMemberList好友id

ChatRoomName群组id

响应

{

"BaseResponse":{

"Ret":0,

"ErrMsg":""

}

,

"MemberCount":0,

"MemberList":[]

}

4.5 群聊邀请好友

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxupdatechatroom?fun=addmember

  • header 
    Content-Type:application/json;charset=UTF-8

  • content

{

"AddMemberList":"@2cbb226c459cc5203aa991942f41e19820f5ef3ccceb2dece598412f36406d1f",

"ChatRoomName":"@@45340ba1e520285af196cef99d2f41a2bdb5cc568569efa178354f08eb863d00",

"BaseRequest":{

"Uin":1443149207,

"Sid":"HqU75NIXRJ6qqu8t",

"Skey":"@crypt_d9da2d81_f3a62e80c16e61ad660dffd14e0ef72c",

"DeviceID":"e681854808526145"

}

}

AddMemberList好友id列表

ChatRoomName群组id

响应

{

"BaseResponse":{

"Ret":0,

"ErrMsg":""

},

"MemberCount":1,

"MemberList":[

{

"Uin":0,

"UserName":"@2cbb226c459cc5203aa991942f41e19820f5ef3ccceb2dece598412f36406d1f",

"NickName":"LbbNiu",

"AttrStatus":0,

"PYInitial":"",

"PYQuanPin":"",

"RemarkPYInitial":"",

"RemarkPYQuanPin":"",

"MemberStatus":0,

"DisplayName":"",

"KeyWord":""

}

...

]

}

4.6 修改群聊名称

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxupdatechatroom?fun=modtopic

  • header 
    Content-Type:application/json;charset=UTF-8

  • content

{

"NewTopic":"lbbniu.com",

"ChatRoomName":"@@45340ba1e520285af196cef99d2f41a2bdb5cc568569efa178354f08eb863d00",

"BaseRequest":{

"Uin":1443149207,

"Sid":"HqU75NIXRJ6qqu8t",

"Skey":"@crypt_d9da2d81_f3a62e80c16e61ad660dffd14e0ef72c",

"DeviceID":"e326783138505913"

}

}

NewTopic新群名称

ChatRoomName群组id

响应

{

"BaseResponse":{

"Ret":0,

"ErrMsg":""

}

,

"MemberCount":0,

"MemberList":[]

}

4.7 置顶聊天

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxoplog

  • header 
    Content-Type:application/json;charset=UTF-8

  • content

{

"UserName":"@@45340ba1e520285af196cef99d2f41a2bdb5cc568569efa178354f08eb863d00",

"CmdId":3,

"OP":1,

"BaseRequest":{

"Uin":1443149207,

"Sid":"HqU75NIXRJ6qqu8t",

"Skey":"@crypt_d9da2d81_f3a62e80c16e61ad660dffd14e0ef72c",

"DeviceID":"e736741369963778"

}

}

响应

{

"BaseResponse":{

"Ret":0,

"ErrMsg":""

}

}

4.8 取消置顶

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxoplog

  • header 
    Content-Type:application/json;charset=UTF-8

  • content

{

"UserName":"@@45340ba1e520285af196cef99d2f41a2bdb5cc568569efa178354f08eb863d00",

"CmdId":3,

"OP":0,

"BaseRequest":{

"Uin":1443149207,

"Sid":"HqU75NIXRJ6qqu8t",

"Skey":"@crypt_d9da2d81_f3a62e80c16e61ad660dffd14e0ef72c",

"DeviceID":"e736741369963778"

}

}

响应

{

"BaseResponse":{

"Ret":0,

"ErrMsg":""

}

}

4.9 给好友添加备注

请求

https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxoplog

  • header 
    Content-Type:application/json;charset=UTF-8

  • content

{

"UserName":"@2cbb226c459cc5203aa991942f41e19820f5ef3ccceb2dece598412f36406d1f",

"CmdId":2,

"RemarkName":"lbbniu.com",

"BaseRequest":{

"Uin":1443149207,

"Sid":"HqU75NIXRJ6qqu8t",

"Skey":"@crypt_d9da2d81_f3a62e80c16e61ad660dffd14e0ef72c",

"DeviceID":"e573447900268361"

}

}

响应

{

"BaseResponse":{

"Ret":0,

"ErrMsg":""

}

}

转载出处: http://web.hanzheng.info/info/document/文档-web微信协议

Web微信协议的更多相关文章

  1. 实现手机扫描二维码页面登录,类似web微信-第一篇,业务分析

    转自:http://www.cnblogs.com/fengyun99/p/3541249.html 关于XMPP组件的文章,先休息两天,好歹已经完整的写了一份. 这两天,先实现一套关于web微信扫描 ...

  2. 爬虫概要及web微信请求分析

    一.爬虫概要 1.网络爬虫是什么 百度百科:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常 ...

  3. day37 爬虫2(web微信、高性能相关、Scrapy)

    s16day37 爬虫2 参考博客:http://www.cnblogs.com/wupeiqi/articles/6229292.html 课堂代码:https://github.com/liyon ...

  4. 基于flask的web微信

    web微信 1.扫码获取头像 当你打开web微信的时候,因为http是无状态的,web微信如何实时的获取用户的扫码动作? 那么这里用到的是长轮询的方式. from flask import Flask ...

  5. web微信开发

    群里接收消息时,使用广播,但需要刷新页面才能接收到广播内容. - 轮询: 定时每秒刷新一次,当群不活跃时,群里的每个客户端都在刷新,对服务端压力太大. - 长轮询:客户端连服务端,服务端一直不断开,也 ...

  6. 基于Flask 实现Web微信登陆

    网页版微信登陆网址 https://login.wx.qq.com/ 获取微信登陆的二维码 在浏览器中访问登陆接口 https://login.wx.qq.com/ 我们查找二维码的图片可以看到 其中 ...

  7. Web微信模拟

    一.概要 目的:实现一个具有web微信类似功能的项目 框架:Django 模块:render.HttpResponse.BeautifulSoup.re.time.requests.json.rand ...

  8. requests+django+bs4实现一个web微信的功能

    前言: 今天我们利用requests模块+django+bs4浏览器来实现一个web微信的基本功能,主要实现的功能如下 a.实现返回二维码 b.实现手机扫码后二维码变成变成头像 c.实现手机点击登陆成 ...

  9. Python 爬虫五 进阶案例-web微信登陆与消息发送

    首先回顾下网页微信登陆的一般流程 1.打开浏览器输入网址 2.使用手机微信扫码登陆 3.进入用户界面 1.打开浏览器输入网址 首先打开浏览器输入web微信网址,并进行监控: https://wx.qq ...

随机推荐

  1. Codeforces Round #665 (Div. 2) D - Maximum Distributed Tree dfs贡献记录

    题意: t组输入,每组数据中n个节点构成一棵树,然后给你n-1条边.给你一个m,然后给你m个k的素数因子,你需要给这n-1条边都赋一个权值,这n-1条边的权值之积应该等于k.如果k的素数因子数量小于n ...

  2. 牛客小白月赛17 G 区间求和

    传送门 题意: 题解: 原本想着使用暴力方法: 1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream& ...

  3. Codeforces Round #171 (Div. 2) B. Books (模拟队列)

    题意:有一组数,问子数组和最大不超过\(t\)的最多元素个数. 题解:用数组模拟队列,不断的往里面放,队列中的元素之和大于\(t\),就不断地从队头弹出直到满足条件,维护一个最大值即可. 代码: in ...

  4. 2019 ICPC Asia Taipei-Hsinchu Regional Problem J Automatic Control Machine (DFS,bitset)

    题意:给你\(m\)个长度为\(n\)的二进制数,求最少选多少个使它们\(|\)运算后所有位置均为\(1\),如果不满足条件,则输出\(-1\). 题解:这题\(n\)的范围很大,所以我们先用\(st ...

  5. Entity Framework中Remove、Modified实体时,在修改或删除时引发主键冲突的问题

    问题: try { string fileId = context.NewsT.Where(t => t.Id == Model.Id).FirstOrDefault().FileId; str ...

  6. 流媒体传输协议之 RTP (上篇)

    本系列文章将整理各个流媒体传输协议,包括 RTP/RTCP,RTMP,希望通过深入梳理协议的设计细节,能够给流媒体领域的开发者带来一定的启发. 作者:逸殊 审核:泰一 介绍 RTP,即 real-ti ...

  7. OpenStack Train版-1.安装基础环境&服务

    1. 服务组件的密码 密码名称 描述 ADMIN_PASS admin用户密码 CINDER_DBPASS 块设备存储服务的数据库密码 CINDER_PASS 块设备存储服务的 cinder 密码 D ...

  8. Kubernets二进制安装(13)之部署Flannel

    Flannel简介 ​ Flannel是CoreDNS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址 ...

  9. HTTP常见状态码(200、301、302、404、500、502)详解

         概述 运维工作中,在应用部署的时候,通常遇到各种HTTP的状态码,我们比较常见的如:200.301.302.404.500.502 等,有必要整理一份常见状态码的文档,加深印象,方便回顾. ...

  10. 创建AVL树,插入,删除,输出Kth Min

    https://github.com/TouwaErioH/subjects/tree/master/C%2B%2B/PA2 没有考虑重复键,可以在结构体内加一个int times. 没有考虑删除不存 ...