【已解决】求助:怎么实现自动下载火绒6
本帖最后由 holley 于 2024-5-15 10:51 编辑通过网页脚本拼接,可以获取到火绒6公测版的3个下载地址分别为:
;~ http://www.huorong.cn/product/downloadHr60.php?pro=hr60&plat=arm64UrlAll
;~ http://www.huorong.cn/product/downloadHr60.php?pro=hr60&plat=x64UrlAll
;~ http://www.huorong.cn/product/downloadHr60.php?pro=hr60&plat=x86UrlAll我使用IDM工具可以直接下载以上链接,,但在au里下载缺失败,请问是什么原因?
还有能否实现根据链接自适应下载?
Local $sSRERe = _INetGetSource("http://www.huorong.cn/product/downloadHr60.php?pro=hr60&plat=x64UrlAll")
最新情况:已实现下载对应安装包,但实际使用上却不够直观,等待时间不定,能否请教一下,对于这种重定向下载链接,怎么实现进度条和文件大小或百分比显示?
Local $sDownloadUrl
Switch @OSArch
Case "X86"
$sDownloadUrl = "http://www.huorong.cn/product/downloadHr60.php?pro=hr60&plat=x86UrlAll"
Case "X64"
$sDownloadUrl = "http://www.huorong.cn/product/downloadHr60.php?pro=hr60&plat=x64UrlAll"
Case "ARM"
$sDownloadUrl = "http://www.huorong.cn/product/downloadHr60.php?pro=hr60&plat=arm64UrlAll"
Case Else
MsgBox(0, "错误", "不支持的系统架构")
Quit()
EndSwitch
Urldown($sDownloadUrl)
Func Urldown($xUrl)
$oHTTP = ObjCreate("winhttp.WinHttpRequest.5.1")
$oHTTP.SetTimeouts(0, 0, 0, 0, 0)
$oHTTP.Option(6) = False
$oHTTP.Open("GET", $xUrl, True)
$oHTTP.Send()
$oHTTP.WaitForResponse()
$sLocation = $oHTTP.GetResponseHeader("Location")
If $sLocation <> "" Then
InetGet($sLocation, @ScriptDir & '\' & StringRegExpReplace($sLocation, '^.+/', ''))
EndIf
EndFunc ;==>Urldown
借助GPT,基本成型,还在优化,主题关闭!
https://www.huorong.cn/5.0.version.json
{
"request_type": 1,
"virustime": "2024-05-12",
"filesize": "24.35M",
"virusVersion": "2024.05.12.1",
"version": "5.0.75.5",
"createtime": "2024-05-12 16:54:27",
"fullName": "sysdiag-full-5.0.75.5-2024.05.12.1.exe",
"allName": "sysdiag-all-5.0.75.5-2024.05.12.1.exe",
"urlFull": "https:\/\/down-tencent.huorong.cn\/sysdiag-full-5.0.75.5-2024.05.12.1.exe",
"urlAll": "https:\/\/down-tencent.huorong.cn\/sysdiag-all-5.0.75.5-2024.05.12.1.exe",
"armFullName": "sysdiag-arm64-full-5.0.75.5-2024.05.12.1.exe",
"armAllName": "sysdiag-arm64-all-5.0.75.5-2024.05.12.1.exe",
"armUrlFull": "https:\/\/down-tencent.huorong.cn\/sysdiag-arm64-full-5.0.75.5-2024.05.12.1.exe",
"armUrlAll": "https:\/\/down-tencent.huorong.cn\/sysdiag-arm64-all-5.0.75.5-2024.05.12.1.exe",
"armFilesize": "24.03M"
}
https://down-tencent.huorong.cn/sysdiag-all-x64-6.0.0.26-2024.05.10.1.exe ze0702 发表于 2024-5-11 14:46
https://down-tencent.huorong.cn/sysdiag-all-x64-6.0.0.26-2024.05.10.1.exe
{:2_80:} 你明后天再看看地址 直接用InetGet函数就行。 zhaoceshi 发表于 2024-5-11 16:49
直接用InetGet函数就行。
我这边测试跟 _INetGetSource一样,报9223的错后,自动退出了。
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Option(4) = 13056
$oHTTP.option(6) = False
$oHTTP.Open("GET", "https://www.huorong.cn/product/downloadHr60.php?pro=hr60&plat=x64UrlAll", True)
$oHTTP.send()
$oHTTP.WaitForResponse()
$sLocation = $oHTTP.GetResponseHeader("Location") ;这个是GET后服务器返回的 头信息~
InetGet($sLocation,@ScriptDir & '\' & StringRegExpReplace($sLocation,'^.+/',''))
holley 发表于 2024-5-11 17:23
我这边测试跟 _INetGetSource一样,报9223的错后,自动退出了。
那么奇怪?我直接用InetGe函数是可以下载的。
https://cdnjson.com/image/8vEPP zhaoceshi 发表于 2024-5-16 17:58
那么奇怪?我直接用InetGe函数是可以下载的。
#include <InetConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>
Local $sFilePath= @TempDir&"\hr.exe"
Local $hDownload = InetGet("http://www.huorong.cn/product/downloadHr60.php?pro=hr60&plat=x64UrlAll",$sFilePath , $INET_FORCERELOAD, $INET_DOWNLOADBACKGROUND)
; 当 InetGetInfo 的第二个索引值返回 True 时, 完成等待下载的监测.
Do
Sleep(250)
Until InetGetInfo($hDownload, $INET_DOWNLOADCOMPLETE)
; 检索接收的总字节数和文件大小.
Local $iBytesSize = InetGetInfo($hDownload, $INET_DOWNLOADREAD)
Local $iFileSize = FileGetSize($sFilePath)
; 关闭 InetGet 返回的句柄.
InetClose($hDownload)
; 显示读取字节数和文件大小的详细信息.
MsgBox($MB_SYSTEMMODAL, "", "总下载大小: " & $iBytesSize & @CRLF & _
"总的文件大小: " & $iFileSize)
Local $sFilePath = @TempDir & "\hr.exe"
Local $hDownload = InetGet("http://www.huorong.cn/product/downloadHr60.php?pro=hr60&plat=x64UrlAll", $sFilePath, $INET_FORCERELOAD, $INET_DOWNLOADBACKGROUND)
If $hDownload = 0 Then
MsgBox($MB_SYSTEMMODAL, "", "下载文件失败")
Exit
EndIf
Local $hGUI = GUICreate("下载进度", 300, 100)
Local $iProgress = GUICtrlCreateProgress(10, 10, 280, 20)
GUISetState(@SW_SHOW)
Do
Sleep(250)
Local $iBytesSize = InetGetInfo($hDownload, $INET_DOWNLOADREAD)
Local $iFileSize = FileGetSize($sFilePath)
GUICtrlSetData($iProgress, Int($iBytesSize / $iFileSize * 100))
Until InetGetInfo($hDownload, $INET_DOWNLOADCOMPLETE)
InetClose($hDownload)
MsgBox($MB_SYSTEMMODAL, "", "下载完成")
GUIDelete($hGUI)
页:
[1]