http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 7573|回复: 10

[HttpHelper] 求助飞哥,万能框架模拟在线即时聊天系统发消息

[复制链接]
发表于 2018-3-19 19:29:34 | 显示全部楼层 |阅读模式
本帖最后由 etkey 于 2018-3-19 19:32 编辑

业务是这样的,需要给http://www.live800.com/这样网站在线客服发送一条任意内容消息,页面逻辑我已经分析差不多了,可就不是不知道为什么get不到数据,有很多这样的网站,我下面用的网站是 https://942368.com/(只是随便找的一个例子)

第一步,刚进入聊天,系统会get下面的url
https://chat56.live800.com/live800/ChaterServer?cmd=209&companyID=736601&visitorIDInSession=736601chater&pagekey=73660110895&rpcImageId=1521452127892
这里cmd=209,返回的是个图片类型,下一次发消息的参数生成需要用到这个图片的宽和高
第二步
系统客服会先给我发一条消息,这个时候会get下面的Url:

https://chat56.live800.com/live800/ChaterServer?cmd=210&companyID=736601&visitorIDInSession=736601chater&pagekey=73660110895&lastMsgTime=-1&rpcImageId=1521452127892
看到cmd=210,得到一个包含页面聊天消息的html
第三步,我如果在框内输入文字,会get下面的url

https://chat56.live800.com/live800/ChaterServer?cmd=208&companyID=736601&visitorIDInSession=736601chater&msgContent=%E4%BD%A0%E5%A5%BD&randomIDForSendMsg=6913&pagekey=73660110895&rpcImageId=1521452136895
这里文字仍然在输入框未发送,其中包含了我输入的内容,其中的6913刚好是上一次209请求图片的高宽拼接成的即27*256+1,这条get仍然会返回一个图片,宽高作为下一次我发送的参数

第四步,我点击发送,会get下面的url
https://chat56.live800.com/live800/ChaterServer?cmd=203&companyID=736601&visitorIDInSession=736601chater&msgContent=%E4%BD%A0%E5%A5%BD&randomIDForSendMsg=7169&pagekey=73660110895&rpcImageId=1521452142894
可以看到cmd=203其他和209类似,7169=28*256+1

就这样依次类推,第一次图片来源cmd=209,以后客服发消息就是cmd=210,返回html,我输入就是get一个cmd=208的url返回图片,我发送消息就是cmd=203,如果什么都不做,系统就不断get一个cmd=204的url:
https://chat56.live800.com/live800/ChaterServer?cmd=204&companyID=736601&visitorIDInSession=736601chater&pagekey=73660110895&isTyping=0&rpcImageId=1521452145428
返回时固定的1*64,目前没发现用处,好像就是保持连接的
我现在的问题是,无论我怎么get那个cmd=209的url都返回null,get cmd=204的则可以得到一个图片,但貌似宽高不对,个体 210的则返回一个没有内容的url,愁死我了,其他参数是我从首页开始一点一点get来的应该没问题

求飞哥帮忙指导一下啊,图片发上去就超限制了,我放在附件了


问题详细描述.pdf

1.02 MB, 下载次数: 27, 下载积分: 金钱 -1



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2018-3-19 19:32:31 | 显示全部楼层
这样的客服系统要怎么搞定啊,是不是我分析方法错了啊
 楼主| 发表于 2018-3-19 19:48:24 | 显示全部楼层
部分代码,其中track'是从首页提取的一个字符串,分解后得到一些参数,放到一个类里,前面的爬取方法代码太多,我就不贴了,但是和聊天没啥关系               
                var track = RegexHelper.RegFromSource(html, "id=\"track\"([\\s\\S]*?)>");
                chat.BaseUrl =@"https://"+HttpHelper.GetUrlHost(item.URL)+ @"/live800/ChaterServer";
                chat.jsessionid = chat.GetValue(track[0], nameof(chat.jsessionid), "\\?");
                chat.companyID=chat.GetValue(track[0], nameof(chat.companyID), "\\&");
                chat.visitorIDInSession = chat.companyID + "chater";
                chat.pagekey=chat.GetValue (track[0], nameof(chat.pagekey), "\\&");
                chat.msgContent = "你好";
               
                item = new HttpItem
                {
                    URL = chat.Get2019Url(209),
                    Method = "get",
                    ContentType = "image/gif;charset=utf-8",
                    Cookie = cookie,
                };
                HttpItem item210 = new HttpItem
                {
                    URL = chat.Get2019Url(210),
                    Method = "get",

                    Cookie = cookie,
                };
            
               var img209= http.GetImage(item);//无论怎么get都是null,换成gethtml是 ""
               var html210 = http.GetHtml(item210);
但是同样的代码我get那个204的链接可以获得一个图片

发表于 2018-3-20 08:20:46 | 显示全部楼层
需要带上证书
 楼主| 发表于 2018-3-20 09:10:15 | 显示全部楼层

额,我怎么搞到证书啊,没玩个这个
发表于 2018-3-20 14:34:19 | 显示全部楼层
etkey 发表于 2018-3-20 09:10
额,我怎么搞到证书啊,没玩个这个

看一下教程,我有写怎么带的。
 楼主| 发表于 2018-3-21 11:59:08 | 显示全部楼层
本帖最后由 etkey 于 2018-3-21 12:04 编辑
sufeinet 发表于 2018-3-20 14:34
看一下教程,我有写怎么带的。

带证书的我会,我现在那一步也搞定了,是少一个url没有请求,我现在也能获的客服发送的信息,但是就是模拟那个cmd=208的get输入请求,总是返回空 TIM图片20180321114443.png
能否帮我看看怎么解决,参数的拼装我和真实环境模拟核对了很多次,应该没问题了

TIM图片20180321120128.png 证书,也带了,cer后缀的证书也带过统统不管用,飞大如果有空麻烦帮我看看,如果解决愿意发个红包酬谢



发表于 2018-3-21 15:20:05 | 显示全部楼层
Cookie的格式有处理吗?不要带Path等参数。另外这个还是建议你把正常的包和你发出去的包进行一次对比,抓一下你发出去的看看和网站上的有什么不同。
 楼主| 发表于 2018-3-21 17:25:28 来自移动端 | 显示全部楼层
sufeinet 发表于 2018-3-21 15:20
Cookie的格式有处理吗?不要带Path等参数。另外这个还是建议你把正常的包和你发出去的包进行一次对比,抓一 ...

这个cookie我还专门写了个函数开处理的,你看图中就知道比对了很多次就是返回不了,郁闷至极
 楼主| 发表于 2018-3-21 20:49:11 来自移动端 | 显示全部楼层
sufeinet 发表于 2018-3-21 15:20
Cookie的格式有处理吗?不要带Path等参数。另外这个还是建议你把正常的包和你发出去的包进行一次对比,抓一 ...

感谢飞大,自己搞定了,哈哈,开心,原来还是cookie问题,我虽然精简了,但没注意排序!!
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-22 14:58

© 2014-2021

快速回复 返回顶部 返回列表