虎牙直播自动弹幕机器人

前几天有个朋友联系我做一个虎牙自动串房发弹幕,主要功能就是在某一个游戏分类下,检索出所有在直播的主播,然后进入房间发送弹幕。很简单的功能,可以通过接口去做,不过太麻烦了,直接采用了selenium+chrome浏览器搞定,一共用了不到1星期的时间。

 

思路:

    1.登陆用户,保存用户登陆的cookie用于实现自动登陆。这个没什么说的很简单。

    2.获取直播列表,可以通过虎牙https://www.huya.com/g这个地址拿到所有游戏分类。

    3.点击某一个游戏分类迭代获取所有页面,以及所有主播。

    4.进入房间,发送弹幕。

    5.进入下一个房间,循环执行。

代码1,初始化selenium

	public WebDriver initWebDriver(boolean isHide, boolean showImage) {
		String proPath = this.getProjectPath();
		System.setProperty("webdriver.chrome.driver", proPath.concat("go/chromedriver.exe"));// chromedriver服务地址
		WebDriver driver = null; // 新建一个WebDriver 的对象,但是new 的是谷歌的驱动
		ChromeOptions opt = new ChromeOptions();
		opt.addArguments("-–single-process");
		opt.addArguments("--no-sandbox");
		
		if (isHide) {
			opt.addArguments("--headless");//隐藏页面
		}else {
			opt.addExtensions(new File(proPath.concat("go/ext/Disable-HTML5-Autoplay.crx")));
			opt.addArguments("--disable-images");
			opt.addArguments("--disable-plugins");
			opt.addArguments(new String[] {"--start-maximized"});
			opt.addArguments(new String[] {"--disable-infobars"});
		}
		driver = new ChromeDriver(opt);
		this.driver = driver;
		return driver;
	}

代码2,进入房间https://www.huya.com/%s后面的%s根据的是房间号码

public void intoRoom (String roomId) {
		String url = "https://www.huya.com/%s";
		this.driver.get(String.format(url, roomId));
	}

代码3,发送弹幕信息,弹幕信息就是模拟输入,发送弹幕就是发送一个回车字符

	public void sendRoomMsg(String msg) {
		for (Character c : msg.toCharArray()) {
			this.driver.findElement(By.id("pub_msg_input")).sendKeys(c.toString());
			this.sleep(233);
		}
		this.driver.findElement(By.id("pub_msg_input")).sendKeys(Keys.ENTER);
		this.sleep(3000);
		//((JavascriptExecutor)this.driver).executeScript("arguments[0].click();", this.driver.findElement(By.id("msg_send_bt")));
	}

总结,有了selenium很方便,也可以通过接口发送,当然接口需要解读的东西很多,但是搞明白了之后就会非常方便。

[email protected]

主题功能菜单

虎牙直播自动弹幕机器人_第1张图片

参数设置界面

虎牙直播自动弹幕机器人_第2张图片

查看未入工会主播

虎牙直播自动弹幕机器人_第3张图片

你可能感兴趣的:(虎牙直播自动弹幕机器人)