吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

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

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

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

界面很丑,但是功能实现了。swing部分代码如下,不是不分享,是代码太多了,展示部分代码。
[Asm] 纯文本查看 复制代码
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] 纯文本查看 复制代码
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] 纯文本查看 复制代码
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] 纯文本查看 复制代码
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] 纯文本查看 复制代码
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, 2024-11-24 08:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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