mg4377娱乐娱城官网_mg4377娱乐手机版_www.mg4377.com

当前位置: mg4377娱乐娱城官网 > www.mg4377.com > 正文

【www.mg4377.com】微信网页版,Tcp端口以及端口相关

时间:2019-06-29 01:09来源:www.mg4377.com
有心上人公司供给如下,手提式有线电电话机通过WIFI连接上网,而主任供给,职员和工人选用手提式有线话机只可以上微信,而无法上别样网页和看在线摄像。上网寻觅了微信使用协商

有心上人公司供给如下,手提式有线电电话机通过WIFI连接上网,而主任供给,职员和工人选用手提式有线话机只可以上微信,而无法上别样网页和看在线摄像。上网寻觅了微信使用协商谈端口。

www.mg4377.com 1

微信web研商分析和达成微信机器人(微信网页版 wx2.qq.com)

1.打初步页,分配二个随机uuid,
2.基于该uuid获取二维码图片。
3.微信客户端扫描该图片,在客户端确认登陆。
4.浏览器不停的调用三个接口,假如回去登陆成功,则调用登陆接口
5.此时得以博得联系人列表,能够发送消息。然后不断调用同步接口。
6.假使同步接口有再次回到,则足以得到新消息,然后继续调用同步接口。

  • Java版达成源码:https://github.com/biezhi/wechat-robot
  • Python实现:https://github.com/Urinx/WeixinBot
  • C#实现:https://github.com/sherlockchou86/WeChat.NET
  • QT实现:https://github.com/xiangzhai/qwx
  • Perl实现:https://github.com/sjdy521/Mojo-Weixin

微信通过TCP方式来张开报纸发表。
TCP通信方式剖析
通信端口深入分析
长途通信端口范围: 80,443,80,443,8080。
HTTP格局解析
【www.mg4377.com】微信网页版,Tcp端口以及端口相关磋商详解。在特征剖判中,发掘微信会选拔HTTP协议进行电视发表。
总是的主机(Host)(正则表明式)为:^short.weixin.qq.com,^(mmsns|mmbiz).qpic.cn。
TLS方式剖判
在特征深入分析中,开采微信会接纳TLS协议举行报纸发表。
再三再四的TLS主机(正则表明式)为:^(wx|weixin|res.wx)www.mg4377.com,.qq.com。
以此协议只是用来检验和屏蔽微信的,不可能监督聊天记录内容。

推行流程

        --------------       ---------------     --------------- 
       |              |     |               |   |               |
       |   Get UUID   |     |  Get Contact  |   | Status Notify |
       |              |     |               |   |               |
        ------- ------       -------^-------     -------^------- 
               |                    |                   |
               |                     -------    -------- 
               |                            |  |
        -------v------                 ----- -- ------        -------------- 
       |              |               |               |      |              |
       |  Get QRCode  |               |  Weixin Init   ------>  Sync Check  <---- 
       |              |               |               |      |              |    |
        ------- ------                 -------^-------        ------- ------     |
               |                              |                      |           |
               |                              |                       ----------- 
               |                              |                      |
        -------v------                 ------- --------       -------v------- 
       |              | Confirm Login |                |     |               |
 ------>    Login      ---------------> New Login Page |     |  Weixin Sync  |
|      |              |               |                |     |               |
|       ------ -------                 ----------------       --------------- 
|             |
|QRCode Scaned|
 ------------- 

出自:笨驴技巧

WebWechat API

安桌手提式无线电话机,能够用tcpdump进行抓包。。解析!!
开始剖判结果:
使用80、8080,登录和相互。
应用:tcp 1五千  端口  SCOTTY High-Speed Filetransferscotty-ft   发送语音文件
TCP: 5222  5223  5228   80  8080   443

1. 到手UUID(参照他事他说加以侦察方法 getUUID)

API 获取 UUID
url https://login.weixin.qq.com/jslogin
method GET
data URL Encode
params appid : wx782c26e4c19acffb
fun : new
lang: zh_CN
_ : 时间戳

回去数据(String):

window.QRLogin.code = 200; window.QRLogin.uuid = "xxx"

来源:

2. 出示二维码(仿照效法方法 showQrCode)

API 显示二维码
url https://login.weixin.qq.com/qrcode/{uuid}
method POST
params t : webwx
_ : 时间戳

微信、手提式有线电话机QQ网络行为简析
测量试验境况:
智能手提式有线电话机一部(展开wifi关闭gprs) —-> Linux wifi 热门 —-> 公网
浅析花招:
在linux 上用tcpdump抓包,用wireshark剖析抓到的数额
在linux上用iptables阻断特定流量,模拟互联网故障,分别模拟了拦截udp 53/tcp 80/tcp 8080/tcp 1伍仟/tcp全拦截等种种场合以及他们的重组
因而 adb shell在堂弟大内举行netstat明白手提式有线电电话机网络链接情形
微信互联网行为:
先后运维后,优先尝试DNS分析特定域名(support.weixin.qq.com,short.weixin.qq.com,long.weixin.qq.com,wx.qlogo.cn);
一旦DNS查询不可用,程序转为选用hardcode的ip链接服务;
若是dns可用,重返的ip为依据ISP智能分析的结果,程序选用重回的ip链接服务;
次第仅在注册阶段采纳https链接,内容不详;
次第选择tcp 80/8080链接服务器,个中80为http协议,8080为未知协议;
80/8080五个端口还要或别的单独三个,均可提供劳务;
80端口为短链接,8080为长链接, 程序会优先使用8080端口;
尚无行使udp传输数据;
当1-2次发送战败时,客户端会弹出提醒“当前互联网境况不佳,是不是交由报告数据”,确认后客户端试图透过web提交反馈数据;
手机qq网络行为:
仅列出跟微信差别之处
品味的域名不相同: monitor.uu.qq.com,3gimg.qq.com, msfwifi.3g.qq.com, kiss.3g.qq.com;
除了80/8080外,还有tcp 14000,功能与8080相同;
次第会先行尝试80/8080,只有这三个不可用时,才尝试1四千;
任何同微信;

3. 等待登入(参谋方法 waitForLogin)这里是微信确认登入

API 二维码扫描登录
url https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login
method GET
params tip : 1:未扫描 0:已扫描
uuid : 获取到的uuid
_ : 时间戳

回来数据(String):

window.code=xxx;

xxx:
    408 登陆超时
    201 扫描成功
    200 确认登录

当返回200时,还会有
window.redirect_uri="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=xxx&uuid=xxx&lang=xxx&scan=xxx";

来源:

4. 签到获取Cookie(参考方法 login)

API webwxnewloginpage
url https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage
method GET
params ticket : xxx
uuid : xxx
lang : zh_CN
scan : xxx
fun : new

重回数据(XML):

<error>
    <ret>0</ret>
    <message>OK</message>
    <skey>xxx</skey>
    <wxsid>xxx</wxsid>
    <wxuin>xxx</wxuin>
    <pass_ticket>xxx</pass_ticket>
    <isgrayscale>1</isgrayscale>
</error>

在这一步获取xml中的 skey, wxsid, wxuin, pass_ticket

方案虚构:只开花以上端口,其余上也是一体开花了,在上网出口处加上网行为治本设施或然软件进行支配,只允许以下正则的网站通行:

5. 微信初始化(参考方法 wxInit)

API webwxinit
url https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxinit
method POST
data JSON
header Content-Type: application/json; charset=UTF-8
params {
     BaseRequest: {
         Uin: xxx,
         Sid: xxx,
         Skey: xxx,
         DeviceID: xxx,
     }
}

回来数据(JSON):

{
    "BaseResponse": {
        "Ret": 0,
        "ErrMsg": ""
    },
    "Count": 11,
    "ContactList": [...],
    "SyncKey": {
        "Count": 4,
        "List": [
            {
                "Key": 1,
                "Val": 635705559
            },
            ...
        ]
    },
    "User": {
        "Uin": xxx,
        "UserName": xxx,
        "NickName": xxx,
        "HeadImgUrl": xxx,
        "RemarkName": "",
        "PYInitial": "",
        "PYQuanPin": "",
        "RemarkPYInitial": "",
        "RemarkPYQuanPin": "",
        "HideInputBarFlag": 0,
        "StarFriend": 0,
        "Sex": 1,
        "Signature": "Apt-get install B",
        "AppAccountFlag": 0,
        "VerifyFlag": 0,
        "ContactFlag": 0,
        "WebWxPluginSwitch": 0,
        "HeadImgFlag": 1,
        "SnsFlag": 17
    },
    "ChatSet": xxx,
    "SKey": xxx,
    "ClientVersion": 369297683,
    "SystemTime": 1453124908,
    "GrayScale": 1,
    "InviteStartCount": 40,
    "MPSubscribeMsgCount": 2,
    "MPSubscribeMsgList": [...],
    "ClickReportInterval": 600000
}

这一步中获取 SyncKey, User 后边的新闻监听用。

^short.weixin.qq.com,^(mmsns|mmbiz).qpic.cn
^(wx|weixin|res.wx).qq.com

6. 拉开微信状态布告(参照他事他说加以调查方法 wxStatusNotify)

API webwxstatusnotify
url https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxstatusnotify
method POST
data JSON
header Content-Type: application/json; charset=UTF-8
params {
     BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx },
     Code: 3,
     FromUserName: 自己的ID,
     ToUserName: 自己的ID,
     ClientMsgId: 时间戳
}

回到数据(JSON):

{
    "BaseResponse": {
        "Ret": 0,
        "ErrMsg": ""
    },
    ...
}

以下是软件完成格局

7. 获取联系人列表(参谋方法 getContact)

API webwxgetcontact
url https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact
method POST
data JSON
header ContentType: application/json; charset=UTF-8
params {
     BaseRequest: {
         Uin: xxx,
         Sid: xxx,
         Skey: xxx,
         DeviceID: xxx,
     }
}

重回数据(JSON):

{
    "BaseResponse": {
        "Ret": 0,
        "ErrMsg": ""
    },
    "MemberCount": 334,
    "MemberList": [
        {
            "Uin": 0,
            "UserName": xxx,
            "NickName": "Urinx",
            "HeadImgUrl": xxx,
            "ContactFlag": 3,
            "MemberCount": 0,
            "MemberList": [],
            "RemarkName": "",
            "HideInputBarFlag": 0,
            "Sex": 0,
            "Signature": "我是二蛋",
            "VerifyFlag": 8,
            "OwnerUin": 0,
            "PYInitial": "URINX",
            "PYQuanPin": "Urinx",
            "RemarkPYInitial": "",
            "RemarkPYQuanPin": "",
            "StarFriend": 0,
            "AppAccountFlag": 0,
            "Statues": 0,
            "AttrStatus": 0,
            "Province": "",
            "City": "",
            "Alias": "Urinxs",
            "SnsFlag": 0,
            "UniFriend": 0,
            "DisplayName": "",
            "ChatRoomId": 0,
            "KeyWord": "gh_",
            "EncryChatRoomId": ""
        },
        ...
    ],
    "Seq": 0
}

www.mg4377.com 2

8.消息检查(参照他事他说加以考察方法 syncCheck)

API synccheck
url https://webpush2.weixin.qq.com/cgi-bin/mmwebwx-bin/synccheck
method GET
data JSON
header ContentType: application/json; charset=UTF-8
params {
     BaseRequest: {
         Uin: xxx,
         Sid: xxx,
         Skey: xxx,
         DeviceID: xxx,
     }
}

回到数据(String):

window.synccheck={retcode:"xxx",selector:"xxx"}

retcode:
    0 正常
    1100 失败/登出微信
selector:
    0 正常
    2 新的消息
    7 进入/离开聊天界面

微信协议小结

9. 获得最新消息(参谋方法 webwxsync)

API webwxsync
url https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxsync?sid=xxx&skey=xxx&pass_ticket=xxx
method POST
data JSON
header ContentType: application/json; charset=UTF-8
params {
     BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx },
     SyncKey: xxx,
     rr: 时间戳取反
}

回来数据(JSON):

{
    'BaseResponse': {'ErrMsg': '', 'Ret': 0},
    'SyncKey': {
        'Count': 7,
        'List': [
            {'Val': 636214192, 'Key': 1},
            ...
        ]
    },
    'ContinueFlag': 0,
    'AddMsgCount': 1,
    'AddMsgList': [
        {
            'FromUserName': '',
            'PlayLength': 0,
            'RecommendInfo': {...},
            'Content': "", 
            'StatusNotifyUserName': '',
            'StatusNotifyCode': 5,
            'Status': 3,
            'VoiceLength': 0,
            'ToUserName': '',
            'ForwardFlag': 0,
            'AppMsgType': 0,
            'AppInfo': {'Type': 0, 'AppID': ''},
            'Url': '',
            'ImgStatus': 1,
            'MsgType': 51,
            'ImgHeight': 0,
            'MediaId': '', 
            'FileName': '',
            'FileSize': '',
            ...
        },
        ...
    ],
    'ModChatRoomMemberCount': 0,
    'ModContactList': [],
    'DelContactList': [],
    'ModChatRoomMemberList': [],
    'DelContactCount': 0,
    ...
}

//www.jb51.net/article/96811.htm

10. 出殡和埋葬新闻(参照他事他说加以考查方法 webwxsendmsg)

API webwxsendmsg
url https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsg?pass_ticket=xxx
method POST
data JSON
header ContentType: application/json; charset=UTF-8
params {
     BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx },
     Msg: {
         Type: 1 文字消息,
         Content: 要发送的消息,
         FromUserName: 自己的ID,
         ToUserName: 好友的ID,
         LocalID: 与clientMsgId相同,
         ClientMsgId: 时间戳左移4位随后补上4位随机数
     }
}

回来数据(JSON):

{
    "BaseResponse": {
        "Ret": 0,
        "ErrMsg": ""
    },
    ...
}

更加多材质:origin
https://github.com/xiangzhai/qwx
https://github.com/Urinx/WeixinBot
http://www.07net01.com/2016/01/1201188.html
http://www.cnblogs.com/xiaozhi_5638/p/4923811.html

宣布的新闻对应二个ID(只要单个方向唯一就能够,服务器端大概会根ID剖断重复抽取),音讯重传机制确定保障有限次的重试,重试退步给予用户提醒,发送成功会反映确认,客户端唯有接到确认信息才清楚发送成功。发送新闻也许不会发生新SyncKey。
根据版本号(SynKey)的景况信息同步机制,增量、有序传输供给马到功成。长连接布告/短连接获取、确认等,交互格局轻巧,确认保障了新闻可信谱、精确科学达到。

客户端/服务器端都会蕴藏音信ID管理记录,制止被另行消费客户端获取最新音信,但未承认,服务器端不会以为该信息被消费掉。后一次客户端会重新获得,会询问当前新闻是还是不是被管理过。依据一些场景估计。
总体上看,微信协议跨平台(TCP或HTPP都可表现,处理格局可统一),通过“握手”同步,很可相信,无论哪一个平台都能够支撑的很好微信协议最小成本为16字节,大多数时日若干个音信包和在一道,批量传输。微信协议说不上最精简,也不是最节省流量,可是非常成功的。

若服务器检验到一些不明确因素,大概会变成微启用套套接层SSL协议举行符合规律的TCP长连接传输。短连接都未有产生变化

出殡音讯方式

发送音信走已经成立的TCP长连接通道,发送新闻到服务器,然后接受认同音讯等,产生三遍交互。

伙伴接收到新闻阅读也都会接收服务器端公告,产生三回交互等。

能够规定,微信发送音信走TCP长连接方式,因为不对自家景况数据产生潜濡默化,应该不调换SyncKey。

在低速网络下,大致会看到音信发送中的提示,属于音讯重发机制
网络不好有的时候客户端会出现发送失利的革命咋舌号
已发送到服务器但未接受确认的新闻,客户端展示青蓝惊叹号,再一次重发,服务器作为重复音讯管理,反馈确认
上传图片,会基于图片大小,分割成几何有些(大概1.5K被划分为一些),同时点,客户端会发起若干次POST诉求,各自上传成功之后,服务器大约会计统计十分之一贰个一体化图片,重返三个缩略图,显示在APP聊天窗口内。APP作为健康的文字新闻发送到服务器端上传音频,则单独走TCP通道,三个两秒的录像音频,客户端录像完成,分为两块传输,一块最大1.5K左右,服务端响应一条数据通告确认收到。共贰回数据传输。
旋律和纯文字音信一致,都以走TCP长连接,客户端发送,服务器端确认。

微信协议容易科研笔记**一般来讲介绍:**

前言

微信可调查研究点大多,这里仅仅从事商业事角度举行调查商讨,会涉嫌到微信协议交流、音讯收发等。所谓“弱水三千,只取一瓢”吧。

凌乱的,有个别长,可间接拉到最终看结论好了。

一。微信协议大概浏览

微信传输协议,官方
公告甚少,在微信技术COO所透漏PPT《微信之道—至简》文书档案中,有所浮现。

纯个人明白:

因张小龙做邮箱Foxmail起家,继而又做了QQ Mail等,QQ Mail是国内率先个扶助Exchange ActiveSync协议的免费邮箱,基于其从事背景,微信从一同先就采取基于ActiveSync的修改版状态同步协议Sync,也就再自然可是了。

一句话:增量式、按序、可相信的情景同步传输的微信协议。

粗粗调换简图如下:

www.mg4377.com 3

怎么样赢得新数据吧:

劳动器端公告,客户端获取

客户端教导新型的SyncKey,发起数据央浼

服务器端生成最新的SyncKey连同最新数据发送给客户端

据他们说版本号机制同步协议,可确定保证数据增量、有序传输

SyncKey,由劳动器端类别号生成器生成,一旦有新音讯发生,将会发出最新的SyncKey。类似于版本号

编辑:www.mg4377.com 本文来源:【www.mg4377.com】微信网页版,Tcp端口以及端口相关

关键词: Swift 杂谈