想写个模拟B站直播聊天框的 发言 脚本, POST后转了SSL发不出去

图片说明

图片说明

图片说明


如图,在聊天框点击发送后,F12可以捕获到POST请求,
可以看到这个请求最终是走了 SSL(443)送到服务器的,
我用Fiddler同样捕获到这个SSL的数据包。


我写脚本模拟的时候,可以模拟到POST行为发送,
但是无法触发到 SSL,导致聊天其实只是在我"本地发送"出去了,
实际上没有发到服务器,结果一刷新页面,实际上是没有发送的


有谁知道怎么处理么

3个回答

StringBuffer sb = new StringBuffer();
URL urls;
HttpURLConnection uc = null;
BufferedReader in = null;
DataOutputStream out = null;
urls = new URL(url);
uc = (HttpURLConnection) urls.openConnection();
uc.setRequestMethod("POST");
uc.setConnectTimeout(connectTimeout);
uc.setReadTimeout(readTimeout);
uc.setDoOutput(true);
uc.setDoInput(true);
uc.setUseCaches(false);
uc.setRequestProperty("Content-Type", "text/xml");
uc.connect();
out = new DataOutputStream(uc.getOutputStream());
out.write(content.getBytes(charset));
out.flush();
in = new BufferedReader(new InputStreamReader(uc.getInputStream(),
charset));
String readLine = "";
while ((readLine = in.readLine()) != null) {
sb.append(readLine);
}
return sb.toString();
,可以用这段发送https请求,不过如果有证书的话,还是发不出去的

Royal_lr
Royal_lr 回复小優YoU: 那还好,没用到证书之类的
大约 2 年之前 回复
lyy289065406
小優YoU 我是用类似的方法解决的,分给你吧。有三个不同的关键点,一个是请求头content-type要用表单类型,另一个是要把selumium的cookies格式转回去https请求头的cookie,三是要把表单参数编码后附加发送,然后就可以了
大约 2 年之前 回复

fiddler里面可以写脚本来发,你先用fiddler试试看。怀疑是你的ssl的证书没有搞对,服务器拒收了。你用的什么脚本?

lyy289065406
小優YoU Fiddler我已经安装了整数了,浏览器也装了,受信任的根证书里面是有DO_NOT_TRUST_FiddlerRoot的。其次我不是用Fiddler模拟去发,只是想解包看看内容是什么,即使解不了也没关系,只是想知道这个SSL究竟要怎么触发到的。目前我是用selenium框架写代码去模拟,如果能解包,用HttpCilent之类的方法去做也可以
大约 2 年之前 回复

先把数据传到后台,再有后台传过来,你直接发送好像是不能在本业面获取的,而且刷新之后肯定是什么都没有的。我用的python的django框架,用ajax可以实现局部刷新。如果是单用户的话,直接保存输入值append到聊天框里就能显示了

lyy289065406
小優YoU 目前我是用selenium框架写代码去模拟,如果能解包,用HttpCilent之类的方法去做也可以。我直接在聊天框POST,数据在本地是发出去了,但是由于没有触发到SSL管道传输,实际上没有上传到服务器,所以跟没发送是一样的。你有相关经验,建议直接去B站找个直播聊天室试试,可能更明白这个问题在哪
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问