holley 发表于 2024-5-11 13:29:50

【已解决】求助:怎么实现自动下载火绒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,基本成型,还在优化,主题关闭!

skysmile 发表于 2024-5-12 18:25:57

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"
}

ze0702 发表于 2024-5-11 14:46:03

https://down-tencent.huorong.cn/sysdiag-all-x64-6.0.0.26-2024.05.10.1.exe

holley 发表于 2024-5-11 15:07:30

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:} 你明后天再看看地址

zhaoceshi 发表于 2024-5-11 16:49:38

直接用InetGet函数就行。

holley 发表于 2024-5-11 17:23:06

zhaoceshi 发表于 2024-5-11 16:49
直接用InetGet函数就行。

我这边测试跟 _INetGetSource一样,报9223的错后,自动退出了。

zghwelcome 发表于 2024-5-11 19:21:08



$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,'^.+/',''))




zhaoceshi 发表于 2024-5-16 17:58:02

holley 发表于 2024-5-11 17:23
我这边测试跟 _INetGetSource一样,报9223的错后,自动退出了。

那么奇怪?我直接用InetGe函数是可以下载的。

https://cdnjson.com/image/8vEPP

zhaoceshi 发表于 2024-5-16 17:59:15

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)

zhaoceshi 发表于 2024-5-19 20:05:54

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]
查看完整版本: 【已解决】求助:怎么实现自动下载火绒6