工作环境内网,严禁联网。
本人啥编程都不懂,希望傻瓜式的操作。
要求使用一个谷歌浏览器窗口打开20-50个标签页,在N多个内网页面输入相应的不同数据后(不需要自动填充),在特定时间或手动启动同时自动点击“提交”按钮。可以是谷歌浏览器插件,也可以是脚本或者同步器,需离线版本。
类似于抢单功能,我这边提前输入好数据,在23:59:58或者我手动快捷键开启后,所有标签页同时以毫秒级别点击“提交”按钮,一旦过了5秒后,也就是00:00:05基本就没希望了,近百人抢不到200条数据。“提交”按钮样式固定、位置也可以调整到同一位置。
网上有键鼠同步器,但是都是打开多个浏览器窗口同步操作的,不支持单浏览器窗口多个标签页同步点击鼠标,好像涉及到窗口句柄啥的。
请各位玉树临风、风流倜傥、英俊潇洒的博主们帮帮我。
我自己写了一个脚本,自动切换标签页自动点击,但是有时候切换标签页时会卡成白页面,出现了无效点击。
非常感谢各位博主们的帮助,我一点编程基础都没有,你们发的答案太高深了T_T,我不会操作验证啊。有没有傻瓜式的插件、脚本、同步器,拿来就能用的,一脸遭逼的深情倾诉。
参考GPT和自己的思路,现在一个谷歌浏览器窗口打开20-50个标签页,并在特定时间或手动启动同时自动点击“提交”按钮,可以考虑使用Tampermonkey插件和JavaScript脚本。
安装Tampermonkey插件
首先,需要在谷歌浏览器中安装Tampermonkey插件。打开谷歌浏览器的应用商店,搜索Tampermonkey插件,然后点击“添加到Chrome”按钮进行安装。
编写JavaScript脚本
接下来,需要编写JavaScript脚本实现自动点击提交按钮的功能。以下是一个简单的示例脚本,假设提交按钮的id为"submit_btn",位置固定在屏幕左上角:
// ==UserScript==
// @name Auto Click Submit Button
// @description Automatically clicks the submit button on multiple tabs
// @version 1
// @match http://*/*
// @match https://*/*
// @grant none
// ==/UserScript==
(function() {
var tabs = [];
var currentTab = 0;
var maxTab = 50;
var submitBtn = document.getElementById("submit_btn");
// open 50 tabs with the same url
for (var i = 0; i < maxTab; i++) {
tabs.push(window.open("http://yourwebsite.com"));
}
// click the submit button on all tabs
function clickSubmit() {
if (currentTab >= maxTab) {
clearInterval(interval);
return;
}
var tab = tabs[currentTab++];
if (tab.closed) {
return;
}
tab.focus();
var submitBtn = tab.document.getElementById("submit_btn");
if (submitBtn) {
submitBtn.click();
}
}
// call clickSubmit every 100ms
var interval = setInterval(clickSubmit, 100);
})();
在上面的示例脚本中,首先创建了一个数组来存储打开的标签页,然后使用for循环打开50个相同的网址,将每个新打开的标签页添加到tabs数组中。接着,定义了一个clickSubmit函数,在该函数中,首先检查当前是否已经点击了所有标签页上的提交按钮,如果是,则清除interval定时器;否则,选择下一个标签页,并在该标签页上执行点击操作。最后,使用setInterval函数每100毫秒调用一次clickSubmit函数。
在谷歌浏览器中运行JavaScript脚本
将编写的JavaScript脚本复制到Tampermonkey插件中,并保存即可。然后,在谷歌浏览器中打开20-50个标签页,并在特定时间或手动启动时运行该脚本,即可自动点击所有标签页上的提交按钮。
“Devil组”引证GPT后的撰写:
使用 Chrome 扩展程序
可以使用一些 Chrome 扩展程序来实现同时在多个标签页点击提交按钮的功能。例如,"Tab Activate" 可以帮助在打开多个标签页时自动激活它们,而 "Auto Refresh" 可以帮助在特定时间或手动触发时刷新这些标签页,从而在刷新后立即提交数据。
使用自动化工具
可以使用一些自动化工具来模拟人类的行为,例如使用 "Selenium" 自动化测试工具。使用 Selenium,可以编写 Python 或其他语言的脚本,以打开多个标签页,输入数据并自动提交。可以使用 "cron" 或其他计划任务工具在特定时间运行这些脚本,从而在需要的时间自动提交数据。
Selenium应该可以满足你的需求,达到你的目标。自动打开还能实现信息提取。
谷歌插件我可以帮忙你下载,到时候直接导入就可以,国内无法访问谷歌
同时点击selenium可能做不到,要切换窗口的,出现空白,有可能是元素还未加载出来,可以加等待。
可以看看我这篇用selenium写的抢票脚本:https://blog.csdn.net/qq_57421630/article/details/119152956?app_version=5.14.3&code=app_1562916241&csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22119152956%22%2C%22source%22%3A%22qq_57421630%22%7D&uLinkId=usr1mkqgl919blen&utm_source=app
selenium可以做到,打开多个页面,并切换页面输入相同内容,在提交时需要切换窗口进行提交,但切换速度非常快(前提是页面提前加载好),20秒绰绰有余了。
20个页面难道不共享同一个cookies吗?你确定?
编一个定时的js按钮点击器就行。
常规秒杀不是js能够抢得到的了,上软件也要看运气。
js无法达到毫秒级,又不是多线程,而且执行效率也慢。
用软件可以达到20ms间隔。
既然是内网,你必须校准毫秒级时间,可以抓取服务器时间接口对比。
你好,针对你的问题,觉得可以用以下几种方法解决。 1. Cookie轮询法。 每当一个页面触发你要同步的事件时,将这个事件写入cookie中,并在所有的页面定时访问cookie。 如果其它页面检测到有新的事件,则执行相应的操作,可以做到简单的页面同步。 缺点:需要定时检测cookie,耗费浏览器资源。 同步的速度和检测cookie的频率有关,不能做到真正的即时同步。 有点:对于浏览器的兼容性较好。 2. HTML5 本地存储方法。 当页面触发你要同步的事件,将这个事件用HTML5 的 localStorage对象进行存储。 此时在其它页面都会触发window.onstorage事件,通过此事件可进行同步。 缺点:在许多旧版本浏览器中并不能很好的支持localStorage 优点:实时性强,用户体验好。 3. 其它方法。 html5 web socket,通过浏览器与服务器的即时通信同步。 html5 web RTC,通过建立浏览器到浏览器的点对点连接进行同步
{
"name": "定时刷新",
"version": "0.5",
"manifest_version": 2,
"description": "定时诊断",
"icons": { "16": "./images/32.png", "128": "./images/128.png" },
"permissions": ["tabs", "http://*/*", "https://*/*"],
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": ["./jquery-1.7.2.min.js", "./autoclickflush.js"]
}
]
}
autoclickflush.js
let timecount = 0,
interval = null;
function autoClick() {
// $("input[value='百度一下']")[0].click(); // jquery
document.querySelector("input[value='百度一下']").click(); // 原生
timecount++;
if (timecount === 7) {
clearInterval(interval);
interval = null;
}
}
interval = setInterval(autoClick, 1000);
2、打开谷歌浏览器的【扩展程序】,上传本地脚本
你这个需求涉及到自动化操作和窗口控制,需要使用一些编程语言和相关的库才能实现。没有编程基础估计很难实现。
首先,你需要选择一种编程语言,比如Python、Java等。然后,你需要安装相关的库,比如Selenium、pyautogui等。
Selenium是一个用于浏览器自动化操作的库,可以用它来打开浏览器、打开网页、输入数据、点击按钮等等。
pyautogui是一个用于模拟键盘和鼠标操作的库,可以用它来模拟鼠标点击、键盘输入等。
Selenium试试???
selenium可以做到,打开多个页面,并切换页面输入相同内容,在提交时需要切换窗口进行提交,但切换速度非常快(前提是页面提前加载好)。多几台电脑不可以吗?
您提出的这个谷歌浏览器多标签页如何同时自动点击确实有点麻烦,麻烦的点就是单个浏览器多个标签页,还要同时点击,我想到的就是使用python中的selenium操作谷歌浏览器,打开多个标签页,就是点击提交时,需要切换标签页,但这个切换应该很快,不是完全毫秒级额度同步的,不知道是否符合你的要求。大致代码如下:
from selenium import webdriver
chrome = webdriver.Chrome()
chrome.maximize_window()
#打开多页标签页
chrome.open_new_tab('http://xxxxx1')
chrome.open_new_tab('http://xxxxx2')
chrome.open_new_tab('http://xxxxx3')
chrome.open_new_tab('http://xxxxx4')
#获取窗口句柄
for handle in chrome.getWindowHandle():
chrome.switchTo().window(handle)#切换到其它窗口
#点击提交按钮
chrome.find_element_by_xpath('xxx').click()
这不跟爬虫爬页面非常类似吗,只不过不是get提交而是post提交
网上python代码一大堆
感觉类似于压力测试。可以考虑使用压测工具,比如JMeter。