tampermonkey油猴与selenium webdriver入门 (by quqi99)_quqi99的博客-程序员秘密

技术标签: python  

作者:张华 发表于:2020-11-08
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明

今天群里在给同学投票,有人点50次,于是,研究了一下。

tampermonkey油猴

下面脚本运行不成功, 因为还得处理跨域问题,不怎么熟悉javascript也就没继续研究了,记录一下只是为了说明油猴的入门及调试方法。
另外,在调试的过程中,遇到油猴脚本总不生效,后来在卸载安装最新版本就好了。

// ==UserScript==
// @name         test
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        http://weiweiyouxiang.com:81/index.php?app_act=detail&id=*
// @require      https://code.jquery.com/jquery-3.3.1.min.js
// @grant        GM_xmlhttpRequest
// @grant        GM_download
// @connect      s95.cnzz.com
// ==/UserScript==

let clickCount = 0;
let totalCount = 100;

(function() {
    'use strict';

//    var script = document.createElement('script');
//    script.type = 'text/javascript';
//    script.src = document.location.protocol + '//s95.cnzz.com/stat.php?id=xxx';
//    document.getElementsByTagName('head')[0].appendChild(script)
    GM_xmlhttpRequest({
    method: "GET",
    url: document.location.protocol + '//s95.cnzz.com/stat.php?id=xxx',
    onload: function(res) {
        if (res.status == 200) {
            //var text = res.responseText;
            //var json = JSON.parse(text);
            //console.log(json);
        }
      }
    });
    vote();
})();

function vote () {
  clickCount = 0;
  try {
    document.execCommand('Refresh')
  }catch (e) {
    alert(e);
  }
  $(document).ready(function(){
    let $theI = $("#btntoupiao")
    doclick($theI);
  });
  // 一小时后再次投票
  setTimeout(vote, 1000 * 60 * 60);
}

function doclick ($i) {
  $i.click();
  clickCount ++ ;
  totalCount ++ ;
  console.log('投票了' + totalCount + '次');
  if (clickCount <= 1) {
    // 最多投1次 每次点击间隔10s
    setTimeout(() => {doclick($i)}, 1000 * 1);
  }
}

selenium webdriver

$ cat vote.py 
#!/usr/bin/env python
# coding=utf-8
# Usage
# /usr/bin/python3 -m pip install --upgrade pip
# pip3 install selenium
# google-chrome-stable --version  #eg: mine is 86.0.4240.183
# https://chromedriver.chromium.org/downloads
# wget https://chromedriver.storage.googleapis.com/86.0.4240.22/chromedriver_linux64.zip
# unzip chromedriver_linux64.zip -d /home/hua/drivers/
# python3 vote.py

import time
import random
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options

chromeOptions = Options()
#Press 'F12' in chrome to client the left place of 'Console' to open 'Network conditions' to change 'User agent'
chromeOptions.add_argument('user-agent="Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Mobile Safari/537.36"')
chromeOptions.headless = True
browser = webdriver.Chrome(executable_path="/home/hua/drivers/chromedriver", options=chromeOptions)
browser.get("http://weiweiyouxiang.com:81/index.php?app_act=detail&id=xxx")
print("Title: %s" % browser.title)
maxNum = random.randint(1,50)
for num in range(1,maxNum):
    print("Vote number : %s" % browser.find_element_by_id("id_vote").text)
    button = browser.find_element_by_xpath('//*[@id="id_btntoupiao"]')
    browser.execute_script("arguments[0].click();", button)
    time.sleep(5)
    browser.refresh()
    print("Vote number after freshing the page : %s" % browser.find_element_by_id("id_vote").text)

Fake Display

在无GUI的ubuntu server上,需要安装一个假的显示器模拟。

apt install -y xvfb
pip3 install pyvirtualdisplay

Others - Install chrome etc

wget -N https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -P ./
dpkg -i --force-depends ~/google-chrome-stable_current_amd64.deb
apt-get -f install -y
dpkg -i --force-depends ~/google-chrome-stable_current_amd64.deb

wget -N https://selenium-release.storage.googleapis.com/3.141/selenium-server-standalone-3.141.59.jar -P ./
xvfb-run java -Dwebdriver.chrome.driver=/home/hua/drivers/chromedriver -jar /home/hua/drivers/selenium-server-standalone-3.141.59.jar
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/quqi99/article/details/109556457

智能推荐

HDU - 1272 小希的迷宫(看似并查集的水题)_b - 小希的迷宫 hdu - 1272_LLL_yx的博客-程序员秘密

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272题意:中文题0.0思路:这道题是在并查集专题里卖弄找到的,但是一看题目就是要求图中有没有环,那么直接判断边数是否等于点数-1就行了。注意:这里需要特判一下第一个数据就是0,0的情况,答案是Yes代码:#include #include #include #incl

ORACLE ORDER BY 索引_wq105032007067的博客-程序员秘密

ORDER BY 通常会有两种实现方法,一个是利用有序索引自动实现,也就是说利用有序索引的有序性就不再另做排序操作了。另一个是把结果选好之后再排序。用有序索引这种,当然是最快的,不过有一些限制条件,来看下面的测试。 17jquery.com测试数据:student表有两个字段id ,sid ,id是主键。一共有20W条记录,id从1到200000,sid也是从1到2

Oracle表段中的高水位线HWM+修正ORACLE表的高水位线_shongyu的博客-程序员秘密

Oracle表段中的高水位线HWM  在Oracle数据的存储中,可以把存储空间想象为一个水库,数据想象为水库中的水。水库中的水的位置有一条线叫做水位线,在Oracle中,这条线被称为高水位线(High-warter mark, HWM)。在数据库表刚建立的时候,由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值。当插入了数据以后,高水位线就会上涨,但是这里也有一个特性,就是如

手机横屏切换竖屏导致捕鱼充值界面崩溃_互联网行者的博客-程序员秘密

1、手机界面充值,横屏切换竖屏导致界面崩溃错误日志如下1-18 23:03:29.479: D/CCFileUtilsAndroid.cpp(6497): relative path = payment/payment.pvr.ccz01-18 23:03:29.509: D/cocos2d-x debug info(6497): Assert failed: Out of range

随便推点

还原二叉树(25 分)_还原二叉树分数 25全屏浏览题目切换布局_爱上键盘的小哥哥的博客-程序员秘密

给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。输入格式:输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。输出格式:输出为一个整数,即该二叉树的高度。输入样例:9ABDFGHIECFDHGIBEAC输出样例:5输入:前序遍历,中序遍历1、

程序员 一点心得_打打卡夫卡的博客-程序员秘密

1 永远不要觉得,你目前的情况是最糟的。 哪怕现在bug无数,也要记得备份代码,因为没准你会在debug的时候,发生更糟糕的情况。那么你会后悔莫及2 解决Bug的时候,一定要冷静,即使bug三千,我只取一瓢。一个一个来,没准一个Bug解决,后面的就行云流水了,如果你本身思维就一团乱麻,那。。。愿上帝保佑你。3 不要过分相信自己的记忆力。 注释,笔记,博客,有效代码储存,项目备份。缺一不可,

html简介_weixin_30430169的博客-程序员秘密

1、什么是htmlHTML是用来制作网页的标记语言HTML是HypertextMarkupLanguage的英文缩写,即超文本标记语言在html中,虽然有文本,但是这些文本需要使用html语言中的标记来标识。当被html中的标记标识之后的文本,它就超出了我们所理解的简单文档范畴。不再是一个普通的文本。而这些文本可以被浏览器进行识别,并且以不同的形式展示在浏览器上。H...

h264和h265_h264为什么宏块大小16*16_~怎么回事啊~的博客-程序员秘密

1 使用ffmepg抽离视频中的视频流和音频流抽离音频:ffmpeg -i h264.mp4 -acodec copy -vn audio.aac-i的意思是input,后接输入源。-codec的意思是直接复制流使用ffplay播放ffplay audio.aac抽离视频:ffmpeg -i h264.mp4 -vcodec copy -bsf h264_mp4toannexb -f h264 out.h264说明:-i h264..

基于Python的单次/批量高程查询_HydroCoder的博客-程序员秘密

基于经纬度的批量高程查询——python通常来说,高程数据的获取途径有以下两个:1、如果有全球/全国DEM数据,可以在arcgis中获取点的value值,即为高程值。2、在科学上网的前提下,通过谷歌地图右下角可以查询。本文介绍一个以python为技术手段查询/批量查询的方法:# coding:utf-8from urllib.request import urlopen,quoteimport requests,csvimport pandas as pdimport jsonimpor

C语言-----标识符、关键字、常量、变量_c语言标识符和变量名_#ifndef _strive_h的博客-程序员秘密

这篇文章主要对C语言的标识符、关键字、常量、变量的一些细致知识点进行详细的讲解。1、标识符的命名规范,也就是常量、变量、函数名的命名规则进行规范的讲解。2、C语言的关键字列表。3、常量的定义及其分类。4、对全局变量和局部变量的细节知识点进行细致讲解及为什么要对变量进行初始化、如果没有初始化变量会如何等等进行详解。