selenium接管已打开的Chrome浏览器及实例

最近一朋友想刷自己在某音直播间活跃度,就自己拿着手机扣次扣次的操作,费时费力,让人看不下去,我说我给你写个脚本吧,反正每次刷的就那几个内容。

某音是直接有网页版的,提到网页版我们很容易想到使用selenium,没错,今天它依然是主角。

但是考虑到某音毕竟是个大平台,直接使用selenium很容易被检测到,奈何本身刷的数据也不是太大,倒不至于被封号怎么的,安全起见用selenium接管下我们的浏览器,让程序更像正常的用户请求。

selenium接管chrome

复制chrome路径

直接右击你的chrome快捷键,选择打开文件所在位置即可进入到chrome目录

执行以下命令

进入到chrome目录后执行如下命令

1
chrome.exe --remote-debugging-port=9222 --user-data-dir="D:\selenum\AutomationProfile"

--user-data-dir 即浏览器运行临时文件目录,随意设置你电脑上的某个目录

输入以上命令之后,chrome就会被打开。

以上操作我理解为让chrome在9222端口打开运行

下载**chromedriver**驱动,编写代码

驱动下载地址http://chromedriver.storage.googleapis.com/index.html

刷某音实例

这里认为你已经通过上述操作,chrome已被打开,此时我们输入某音直播间链接,自己扫码登录。

大概流程其实就是获取直播间弹幕输入文本框和发送按钮,然后输入内容发送就可以了。

为了更像人类操作,建议一个字符一个字符的进行输入,而且输入间隔时间也最好不一致,每次刷词的的时间间隔最好也随机一下。

下面放出来简单的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import random
import time

from selenium import webdriver
from selenium.webdriver.chrome.options import Options


chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
# driver就是当前浏览器窗口,驱动为刚才下载下来的的驱动路径
chrome_driver = r"./chromedriver.exe"
driver = webdriver.Chrome(chrome_driver,options=chrome_options)
# 获取发送文本框
input_element = driver.find_element_by_xpath('//*[@id="_douyin_live_scroll_container_"]/div/div[2]/div[1]/div[2]/div/div/div/div[2]/textarea')
print(input_element)
# 获取发送按钮
submit_element = driver.find_element_by_xpath('//*[@id="_douyin_live_scroll_container_"]/div/div[2]/div[1]/div[2]/div/div/div/div[2]/button')
print(submit_element)
# 模拟要发送的内容列表
txt = ["111111111", "222222222", "333333333", "444444444", "555555555", "666666666", "777777777", "888888888", "999999999", "000000000"]

print("开始……")
for i in range(10):
# 随机拼接两段内容
key_text = "".join(random.choices(txt, k=2))
for char in key_text:
input_element.send_keys(char)
# 每0-1秒输入一个字符
time.sleep(random.random())

time.sleep(0.5)
# 发送弹幕
submit_element.click()
print(f"第{i+1}次,发送【{key_text}】成功")
# 每次发送弹幕间隔0-5秒
time.sleep(random.random()*5)

最后输入效果大概如下: