

利用 Powershell 编写简单的浏览器脚本
source link: http://www.cnblogs.com/aureate-sunshine/p/13095763.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

生活中有很多事情是低效益,重复性。比如每天上某些网站,先登录再签到打卡,比如每隔一段时间清理回收站的文件等等。一个成熟的软件工程师应该想到用软件解决他。
对于这些简单的小任务,一般用脚本实现。比如Python脚本或者JavaScript脚本等等,不过还得装运行环境。如果能在电脑上直接用就好了,那么有没有呢。
有,那就是基于命令行(.bat)脚本或者 Powershell 脚本(.ps1),这两个东东都是 Windows 自带运行环境的,比较方便的脚本。
而本文的主角就是 Powershell。
PowerShell 是一种跨平台的任务自动化和配置管理框架,由命令行管理程序和脚本语言组成。 与大多数接受并返回文本的 shell 不同,PowerShell 构建在 .NET 公共语言运行时 (CLR) 的基础之上,接受并返回 .NET 对象。 这一根本上的改变引入了全新的自动化工具和方法。详见 Powershell官方说明
长话短说,Show me the code。
下面是一个简单的示例,我准备写一个脚本,控制 IE 浏览器打开百度,然后搜索“微软药丸”,看看专业的药丸师有什么见解。
#声明变量 #待会要用的链接 $Url = "http://baidu.com" #待会要用的关键词 $Keyword = "微软药丸" #创建一个IE对象 $IE = New-Object -com internetexplorer.application $IE.visible = $true #导航到URL $IE.navigate($url); #等待完全加载 while ($IE.Busy -eq $true) { Start-Sleep -s 1 Write-Host "wait for loading..." -ForegroundColor Gray } #在 Console 打印 Log Write-Host "Enter Baidu Main Page" -ForegroundColor Cyan #找到百度首页的输入框元素,输入关键词 $IE.Document.getElementById("kw").value = $Keyword #找到百度首页的搜索按钮,执行点击事件 $IE.Document.getElementById("su").Click() Write-Host "Submit keyword" -ForegroundColor Cyan start-sleep -milliseconds 500 #等待页面加载 while ($IE.Busy -eq $true) { Write-Host "wait for loading..." -ForegroundColor Gray Start-Sleep -s 1 } #没有意义的等待延时,就是任性一下 Start-Sleep -s 1 Write-Host "Bye!" -ForegroundColor Cyan
在记事本输入这些代码,保存为 Baidu.ps1 文件。
在文件所在目录按住SHIFT键,在当前目录启动 Powershell。
输入.\Baidu.ps1,就可以执行了。
下面就是执行效果,完美~
这只是一个简单的例子,但是麻雀虽小,五脏俱全,我想介绍的启动 IE,输入文本,模拟点击,输出Log 都用到了。
你也可以用他来登录某些网站进行签到,领奖,打卡等等,思路是一样的。总之浏览器能做的事情都可以将其程序自动化。
这个时候你或许会觉得,哎,我每次都用手动执行脚本,那也不省事呀。能不能每天领一次奖呢?
Absolutely,下回我们简单介绍一下如何用“Windows任务计划”把脚本安排得明明白白。
========================== PS ===================================
1.Powershell的相关文章里面,通过IE获取元素一般写的是
$IE.Document.getElementById( " kw ")
本文也是,这个东西一般没啥问题,但是真出问题你就头疼,比如在Win10环境中我需要获取的某个Button元素一直找不到,然后还搜不到原因,一度没法使用。
但是最终在文档找到 了 IE 的全新 COM接口
$IE.Document.IHTMLDocument3_getElementById( " kw ")
如果执行脚本时发现类似下面这样的错误,搜百度也解决不了,那么请试试使用新的API。
Exception from HRESULT: 0x800A138A
At <path>.ps1:
char:5
+ $IE.Document.getElementsByID("kw").Click();
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
由于Powershell是通过COM接口去控制IE的,所以这个问题时 IE 浏览器的锅。因为它是预装的,而且IE11完全够用,一般还是用他。
以上。
Recommend
-
84
上传文件方法脚本编写
-
11
编写自己的Acunetix WVS漏洞脚本 乌帽子
-
8
作者:astarsun,腾讯搜索工程师 写过很多 bash 脚本的人都知道,bash 的坑不是一般的多。其实 bash 本身并不是一个很严谨的语言,但是很多时候也不得不用。以下总结了一些编写可靠的 bash 脚本的小 tips。
-
6
本文对 zsh 补全系统进行了简单的介绍,然后分析了一个完整的示例,该示例可以作为一个新的补全脚本的起点。剩余内容对示例补全脚本进行了简要的分析和介绍。 zsh completion systemzsh completion system(compsys)是 zsh 的重...
-
18
0x00 前言 在上篇文章《渗透技巧——通过HTTP协议获得Net-NTLM ha...
-
12
通过向一批图像添加效果来学习 GIMP 的脚本语言 Script-Fu。 来源: https:// linux.cn/article-13093-...
-
6
一、脚本 今天主要分享一个shell脚本,用来获取linux系统CPU、内存、磁盘IO等信息。 #!/bin/bash # 获取要监控的本地服务...
-
15
PSArm – PowerShell DSL For Azure Resource Manager – Introduction #PowerShell #AzureResourceManager Those who worked on Azure Resource Manager (ARM) templates understand that complexity of writing and making sure that the templ...
-
5
Wez:Rust编写的类似Powershell的终端模拟器 WezTerm 是一个 GPU 加速的跨平台终端模拟器和多路复用器,可在 Linux、macOS、Windows 10 和 FreeBS...
-
5
利用yock编写批处理脚本,替代batch和shell ansurfen · 5天之前 · 574 次...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK