吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6038|回复: 28
上一主题 下一主题
收起左侧

[其他原创] 抖音场控思路

  [复制链接]
跳转到指定楼层
楼主
6332195 发表于 2023-4-10 11:16 回帖奖励
想了好久还是发下吧,有很多人找我做个抖音场控,自己做完了,然后朋友拿出去代{过}{滤}理卖了,现在分享下思路。
因为是个java程序员,所以拿得java开发的。
目前场控有几种思路:
1、是PC端调用js,获取粉丝发言和礼物信息等。然后模拟用户发言。
2、是PC端直接以流的形式进行解密读取然后直接把要发言的内容加密发送。
3、是移动端autojs,没研究。
4、是移动端hook,直接调用方法,研究了,没找到具体类和方法名。(如有朋友找到了,方便的话提供给我,我继续研究,感谢)
正文:本人采用的是第一种方法,原因很简单,就是简单。
思路,首先用java创建了一个Application,然后用swing画了个样式。如下图,有些场控的设置。

界面很丑,但是功能实现了。swing部分代码如下,不是不分享,是代码太多了,展示部分代码。
[Asm] 纯文本查看 复制代码
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
class FrameInOut extends JFrame implements ActionListener
{
    JButton btn1,btn2,btn3;
    static JTextArea ta1,ta2;
    JTextField jtf_urlts,jtf_url,jtf2,jtf08;
    JPanel p1,p2,p3;
    ImageIcon background;
    JPanel imagePanel; 
    JComboBox comboBox01,comboBox02,comboBox03,comboBox04,comboBox05,comboBox07,comboBox08,comboBox09,comboBox11,comboBox12,comboBox13,comboBox14,comboBox15,comboBox16;
    boolean dk = false;
     
    FrameInOut()
    {
        super(Tools.title);
        background = new ImageIcon("image/background.jpeg");//背景图片 
        JLabel label = new JLabel(background);//把背景图片显示在一个标签里面
        label.setBounds(0,0,background.getIconWidth(),background.getIconHeight());
        //把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明               
        imagePanel = (JPanel)this.getContentPane(); 
        imagePanel.setOpaque(false);
        imagePanel.setLayout(new FlowLayout());
        this.getLayeredPane().setLayout(null); 
        //把背景图片添加到分层窗格的最底层作为背景               
        this.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));
        this.setFont(new Font("隶体",Font.BOLD,100));
        this.setBackground(Color.blue);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
        /*初始化各个按钮*/
        JLabel jl1 = new JLabel("填写使用编号后点击登录");
        jl1.setHorizontalAlignment(SwingConstants.RIGHT);
         
        jtf_urlts = new JTextField();
        jtf_urlts.setText("填写使用编号后点击登录");
        jtf_urlts.setEditable(false);
        jtf_urlts.setFont(new Font("隶体",Font.BOLD,20));
        jtf_url = new JTextField(20);
        jtf_url.setText("");
        Map infoMap = InfoTools.getInfo();
        if (infoMap.containsKey("zbj")) {
            String zbj = (String) infoMap.get("zbj");
            if (zbj.trim().length() > 0) {
                jtf_url.setText(zbj.trim());
            }
        }
        jtf_url.setFont(new Font("隶体",Font.BOLD,20));
         
        btn1=new JButton("应用");
        btn2=new JButton("打开直播间");
        btn3=new JButton("登录");
        btn1.setEnabled(false);
        btn2.setEnabled(false);
        /*初始化文本域*/
        /*初始化文本域的大小,行列数*/
        ta1=new JTextArea(17,40);
        ta2=new JTextArea(17,40);
        /*初始化面板,将个空间加入容器*/
         
        p1=new JPanel();
        p2=new JPanel(new GridLayout(7, 4,20,10));//4行4列 水平间距20 垂直间距10
        p3=new JPanel();
        p1.add(jl1);
        p1.add(jtf_url);
        p1.add(btn3);
        p1.add(btn1);
        p1.add(btn2);
         
        //文字感谢总控
        JLabel jl01 = new JLabel("文字感谢总控:");
        jl01.setFont(new Font("隶体",Font.BOLD,20));
        jl01.setHorizontalAlignment(SwingConstants.RIGHT);
        comboBox01=new JComboBox();//创建一个新的下拉框对象
        comboBox01.addItem("开");//给下拉框对象添加条目元素
        comboBox01.addItem("关");
        comboBox01.setFont(new Font("隶体",Font.BOLD,20));
        p2.add(jl01);
        p2.add(comboBox01);
         
        //语音感谢总控
        JLabel jl09 = new JLabel("语音感谢总控:");
        jl09.setFont(new Font("隶体",Font.BOLD,20));
        jl09.setHorizontalAlignment(SwingConstants.RIGHT);
        comboBox09=new JComboBox();//创建一个新的下拉框对象
        comboBox09.addItem("开");//给下拉框对象添加条目元素
        comboBox09.addItem("关");
        comboBox09.setFont(new Font("隶体",Font.BOLD,20));
        p2.add(jl09);
        p2.add(comboBox09);
         
         
         
         
        //升级感谢开关
        JLabel jl03 = new JLabel("升级感谢开关:");
        jl03.setFont(new Font("隶体",Font.BOLD,20));
        jl03.setHorizontalAlignment(SwingConstants.RIGHT);
        comboBox03=new JComboBox();//创建一个新的下拉框对象
        comboBox03.addItem("开");//给下拉框对象添加条目元素
        comboBox03.addItem("关");
        comboBox03.setFont(new Font("隶体",Font.BOLD,20));
        p2.add(jl03);
        p2.add(comboBox03);
         
        //礼物感谢开关
        JLabel jl04 = new JLabel("礼物感谢开关:");
        jl04.setFont(new Font("隶体",Font.BOLD,20));
        jl04.setHorizontalAlignment(SwingConstants.RIGHT);
        comboBox04=new JComboBox();//创建一个新的下拉框对象
        comboBox04.addItem("开");//给下拉框对象添加条目元素
        comboBox04.addItem("关");
        comboBox04.setFont(new Font("隶体",Font.BOLD,20));
        p2.add(jl04);
        p2.add(comboBox04);
         
        //欢迎感谢开关
        JLabel jl05 = new JLabel("欢迎感谢开关:");
        jl05.setFont(new Font("隶体",Font.BOLD,20));
        jl05.setHorizontalAlignment(SwingConstants.RIGHT);
        comboBox05=new JComboBox();//创建一个新的下拉框对象
        comboBox05.addItem("开");//给下拉框对象添加条目元素
        comboBox05.addItem("关");
        comboBox05.setFont(new Font("隶体",Font.BOLD,20));
        p2.add(jl05);
        p2.add(comboBox05);
         
      //文字发言延时
        JLabel jl02 = new JLabel("文字发言延时:");
        jl02.setFont(new Font("隶体",Font.BOLD,20));
        jl02.setHorizontalAlignment(SwingConstants.RIGHT);
        comboBox02=new JComboBox();//创建一个新的下拉框对象
        comboBox02.addItem("2秒");
        comboBox02.addItem("3秒");
        comboBox02.addItem("4秒");
        comboBox02.addItem("5秒");
        comboBox02.addItem("6秒");
        comboBox02.addItem("7秒");
        comboBox02.addItem("8秒");
        comboBox02.addItem("9秒");
        comboBox02.setSelectedItem("4秒");
        comboBox02.setFont(new Font("隶体",Font.BOLD,20));
        p2.add(jl02);
        p2.add(comboBox02);
         
        //定时发言开关
        //JLabel jl06 = new JLabel("定时发言开关:");
        //jl06.setFont(new Font("隶体",Font.BOLD,20));
        //jl06.setHorizontalAlignment(SwingConstants.RIGHT);
        //comboBox06=new JComboBox();//创建一个新的下拉框对象
        //comboBox06.addItem("开");//给下拉框对象添加条目元素
        //comboBox06.addItem("关");
        //comboBox06.setFont(new Font("隶体",Font.BOLD,20));
        // p2.add(jl06);
        //p2.add(comboBox06);
         
        //定时发言延时
        JLabel jl07 = new JLabel("定时发言延时:");
        jl07.setFont(new Font("隶体",Font.BOLD,20));
        jl07.setHorizontalAlignment(SwingConstants.RIGHT);
        comboBox07=new JComboBox();//创建一个新的下拉框对象
        comboBox07.addItem("30秒");//给下拉框对象添加条目元素
        comboBox07.addItem("60秒");
        comboBox07.addItem("120秒");
        comboBox07.addItem("180秒");
        comboBox07.addItem("240秒");
        comboBox07.addItem("300秒");
        comboBox07.setSelectedItem("60秒");
        comboBox07.setFont(new Font("隶体",Font.BOLD,20));
        p2.add(jl07);
        p2.add(comboBox07);
         
        //定时发言内容
        JLabel jl08 = new JLabel("幸运惊喜开关:");
        jl08.setFont(new Font("隶体",Font.BOLD,20));
        jl08.setHorizontalAlignment(SwingConstants.RIGHT);
        comboBox08 = new JComboBox();//创建一个新的下拉框对象
        comboBox08.addItem("关");
        comboBox08.addItem("开");//给下拉框对象添加条目元素
        comboBox08.setFont(new Font("隶体",Font.BOLD,20));
        p2.add(jl08);
        p2.add(comboBox08);
         
         
         
         
        //语音后缀开关
        //JLabel jl10 = new JLabel("语音后缀开关:");
        //jl10.setFont(new Font("隶体",Font.BOLD,20));
        //jl10.setHorizontalAlignment(SwingConstants.RIGHT);
        //comboBox10=new JComboBox();//创建一个新的下拉框对象
        //comboBox10.addItem("开");//给下拉框对象添加条目元素
        //comboBox10.addItem("关");
        //comboBox10.setFont(new Font("隶体",Font.BOLD,20));
        //p2.add(jl10);
        //p2.add(comboBox10);
         
        //语音礼物开关
        JLabel jl11 = new JLabel("语音礼物开关:");
        jl11.setFont(new Font("隶体",Font.BOLD,20));
        jl11.setHorizontalAlignment(SwingConstants.RIGHT);
        comboBox11=new JComboBox();//创建一个新的下拉框对象
        comboBox11.addItem("开");//给下拉框对象添加条目元素
        comboBox11.addItem("关");
        comboBox11.setFont(new Font("隶体",Font.BOLD,20));
        p2.add(jl11);
        p2.add(comboBox11);
         
        //发音人物选择
        JLabel jl12 = new JLabel("发音人物选择:");
        jl12.setFont(new Font("隶体",Font.BOLD,20));
        jl12.setHorizontalAlignment(SwingConstants.RIGHT);
        comboBox12=new JComboBox();//创建一个新的下拉框对象
        comboBox12.addItem("小燕(离线女生)");//给下拉框对象添加条目元素
        comboBox12.addItem("小峰(离线男生)");
        comboBox12.setFont(new Font("隶体",Font.BOLD,20));
        p2.add(jl12);
        p2.add(comboBox12);
         
         
        //语音延时
        JLabel jl13 = new JLabel("语音发言延时:");
        jl13.setFont(new Font("隶体",Font.BOLD,20));
        jl13.setHorizontalAlignment(SwingConstants.RIGHT);
        comboBox13=new JComboBox();//创建一个新的下拉框对象
        comboBox13.addItem("4秒");//给下拉框对象添加条目元素
        comboBox13.addItem("6秒");
        comboBox13.addItem("8秒");
        comboBox13.addItem("10秒");
        comboBox13.addItem("12秒");
        comboBox13.addItem("14秒");
        comboBox13.addItem("16秒");
        comboBox13.setSelectedItem("10秒");
        comboBox13.setFont(new Font("隶体",Font.BOLD,20));
        p2.add(jl13);
        p2.add(comboBox13);
         
        //发音语速
        JLabel jl14 = new JLabel("语音发音语速:");
        jl14.setFont(new Font("隶体",Font.BOLD,20));
        jl14.setHorizontalAlignment(SwingConstants.RIGHT);
        comboBox14=new JComboBox();//创建一个新的下拉框对象
        comboBox14.addItem("10");//给下拉框对象添加条目元素
        comboBox14.addItem("20");
        comboBox14.addItem("30");
        comboBox14.addItem("40");
        comboBox14.addItem("50");
        comboBox14.addItem("60");
        comboBox14.addItem("70");
        comboBox14.addItem("80");
        comboBox14.addItem("90");
        comboBox14.addItem("100");
        comboBox14.setSelectedItem("50");
        comboBox14.setFont(new Font("隶体",Font.BOLD,20));
        p2.add(jl14);
        p2.add(comboBox14);
         
        //发音语调
        JLabel jl15 = new JLabel("语音发音语调:");
        jl15.setFont(new Font("隶体",Font.BOLD,20));
        jl15.setHorizontalAlignment(SwingConstants.RIGHT);
        comboBox15=new JComboBox();//创建一个新的下拉框对象
        comboBox15.addItem("10");//给下拉框对象添加条目元素
        comboBox15.addItem("20");
        comboBox15.addItem("30");
        comboBox15.addItem("40");
        comboBox15.addItem("50");
        comboBox15.addItem("60");
        comboBox15.addItem("70");
        comboBox15.addItem("80");
        comboBox15.addItem("90");
        comboBox15.addItem("100");
        comboBox15.setSelectedItem("50");
        comboBox15.setFont(new Font("隶体",Font.BOLD,20));
        p2.add(jl15);
        p2.add(comboBox15);
         
        //发音音量
        JLabel jl16 = new JLabel("语音发音音量:");
        jl16.setFont(new Font("隶体",Font.BOLD,20));
        jl16.setHorizontalAlignment(SwingConstants.RIGHT);
        comboBox16=new JComboBox();//创建一个新的下拉框对象
        comboBox16.addItem("10");//给下拉框对象添加条目元素
        comboBox16.addItem("20");
        comboBox16.addItem("30");
        comboBox16.addItem("40");
        comboBox16.addItem("50");
        comboBox16.addItem("60");
        comboBox16.addItem("70");
        comboBox16.addItem("80");
        comboBox16.addItem("90");
        comboBox16.addItem("100");
        comboBox16.setSelectedItem("50");
        comboBox16.setFont(new Font("隶体",Font.BOLD,20));
        p2.add(jl16);
        p2.add(comboBox16);
         
         
        p3.add(ta1);
        p3.add(ta2);
        add(p1);
        add(p2);
        add(p3);
        setLayout(new FlowLayout());//流式布局
        /*设置面板背景色*/
        p1.setBackground(Color.LIGHT_GRAY);
        /*各个按钮注册事件监听器*/
        btn1.addActionListener(this);
        btn2.addActionListener(this);
        btn3.addActionListener(this);
        setSize(1024,768);//设置界面尺寸
        setVisible(true);
    }

然后因为朋友想做成商业版的,所以很多设置在服务端,展示下服务端功能。

因为是管理员截图所以功能比普通用户多些。
然后最初的想法是调用个浏览器,然后控制,发现行不通,然后开始内建个浏览器,采用的是jxbrowser,然后用了两个版本,之前用的是6.24.3,现在主要用7.19,这个自行在网上所搜吧。
然后就是用浏览器打开直播地址。
[Asm] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
JFrame frame = new JFrame(Tools.title);
            //RenderingMode ss = com.teamdev.jxbrowser.engine.RenderingMode.HARDWARE_ACCELERATED;
            // 谷歌内核浏览器
            //Engine engine = Engine.newInstance(
            //        EngineOptions.newBuilder(ss).build());
            JInternalFrame jf = new JInternalFrame();
            Tools.browser = Browser.internalBrowser(frame,jf,Tools.url);
            BrowserView view = BrowserView.newInstance(Tools.browser);
            //禁用close功能
//          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            //隐藏任务栏图标
//          frame.setType(JFrame.Type.UTILITY);
//          //不显示标题栏,最大化,最小化,退出按钮
            frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            frame.add(view, BorderLayout.CENTER);
            frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);

然后用户登陆后,通过js监听直播间内的粉丝发言和礼物,找到class标签是"webcast-chatroom___item";
[Asm] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
divs = Tools.getElementsByClassName(Tools.browser, Tools.ltkbs);
 
public static List<Element> t5 = null;
    public static List<Element> getElementsByClassName(Browser browser,String className)
    {
        browser.mainFrame().flatMap(Frame::document).ifPresent(document -> {
        t5 = document.findElementsByClassName(className);
        });
        return t5;
    }
    

然后就是发言环节。直接代码。
[Asm] 纯文本查看 复制代码
1
2
3
4
5
String js = "document.querySelector('textarea').focus();document.execCommand('selectAll', false, null);document.execCommand('insertText', false, '" + fynr + "');";
                Tools.executeJavaScript(Tools.browser, js);
                //Tools.browser.executeJavaScript(js);
                String js_oc = "document.getElementsByClassName('" + Tools.fskbs + "')[0].click();";
                Tools.executeJavaScript(Tools.browser, js_oc);

排版实在没时间,如果有兴趣的可以一起研究。

免费评分

参与人数 7吾爱币 +12 热心值 +6 收起 理由
52pjdexiaozhang + 1 + 1 我很赞同!
BigRodman + 1 + 1 我很赞同!
jamessteed + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
wushaominkk + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
LZJ123lzj + 1 谢谢@Thanks!
bmy5585 + 1 我很赞同!
坐久落花多 + 1 + 1 期待成品

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
 楼主| 6332195 发表于 2023-4-10 11:18 |楼主
最后执行js的时候封装了个方法,然后给大家补上
[Asm] 纯文本查看 复制代码
1
2
3
4
public static void executeJavaScript(Browser browser,String javaScript)
    {
        browser.mainFrame().get().executeJavaScript(javaScript);
    }
推荐
18076635521 发表于 2023-5-4 10:29
需要需要,可付费,有没有自己批量添加话术,然后随机发送一条,场控的号也是自己的?还是软件本身自带的
3#
楚狂客 发表于 2023-4-10 11:22
4#
yangpipia 发表于 2023-4-10 11:53
有没有免费的啊
5#
Isabellaa 发表于 2023-4-10 12:31
感谢感谢分享
6#
anderawYang 发表于 2023-4-10 12:48
晚上下班回家试试
7#
myhzqa 发表于 2023-4-10 13:48
膜拜大佬,这个有现成的app嘛 考虑入手个
8#
wzz2690 发表于 2023-4-10 14:17
都是收费的,要是有免费的就更好了
9#
Galaxyou 发表于 2023-4-10 15:34
考不考虑开源啊大佬
10#
huxian2020 发表于 2023-4-10 15:43
你這個不會只是畫了一個界面吧,代碼裡面看不到協議接口啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-6 15:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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