我正在编写一个 powershell 脚本来模拟登录过程,然后从网页中捕获数据。一开始我失败了,设置了 cookies 后根本无法进入登录页面。
这是我写的脚本:
首先,获取 cookies
$session = New-Object Microsoft.PowerShell.Commands.WebRequestSession
Get-Content .\cookie.txt | foreach {
$line=$_ -split '/' | select -First 1
$tokens=$line.Split("`t").TrimEnd()
$c=@{
name=$tokens[0]
value=$tokens[1]
domain=$tokens[2]
}
$cookie = New-Object System.Net.Cookie
$cookie.Name=$c.name
$cookie.Value=$c.Value
$cookie.Domain=$c.domain
$session.Cookies.Add($cookie)
}
然后,使用 Invoke-RestMethod 从网页捕获数据
$r=Invoke-RestMethod "http://tz.cscec.com/x5/portal/index.w?timestamp=1486704989262" -WebSession $session -UserAgent 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36'
最后,输出所有捕获的数据
$r | Out-File "F:\tz.data\$page.html"
以下是cookie.txt的内容:
JSESSIONID XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.tomcat1 tz.cscec.com /x5 Wed Feb 07 2018 14:47:48 GMT+0800 (中国标准时间)
justep-remember true tz.cscec.com / Tue Feb 14 2017 10:22:03 GMT+0800 (中国标准时间)
justep-username anyone tz.cscec.com / Tue Feb 14 2017 14:47:39 GMT+0800 (中国标准时间)
request-use-base64 false tz.cscec.com / Wed Feb 07 2018 14:47:48 GMT+0800 (中国标准时间)
yunsuo_session_verify SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS .cscec.com / Mon Dec 27 2021 02:58:58 GMT+0800 (中国标准时间)
我的输出文件是登录前的页面。看起来 cookie 部分不起作用。有人可以看看我的代码并给我一些建议吗?
答案1
我自己来回答我的问题...问题是 cookie 文件,JSESSIONID 将在 24 小时后过期。刷新 cookie 文件后,我登录网站。