找回密码
 加入
搜索
查看: 202|回复: 9

[网络通信] 【已解决】求助:怎么实现自动下载火绒6

[复制链接]
发表于 2024-5-11 13:29:50 | 显示全部楼层 |阅读模式
本帖最后由 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,基本成型,还在优化,主题关闭!
发表于 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"
}

评分

参与人数 1金钱 +10 收起 理由
holley + 10 赞一个!

查看全部评分

发表于 2024-5-11 14:46:03 | 显示全部楼层
 楼主| 发表于 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

你明后天再看看地址
发表于 2024-5-11 16:49:38 | 显示全部楼层
直接用InetGet函数就行。
 楼主| 发表于 2024-5-11 17:23:06 | 显示全部楼层
zhaoceshi 发表于 2024-5-11 16:49
直接用InetGet函数就行。

我这边测试跟 _INetGetSource一样,报9223的错后,自动退出了。
发表于 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,'^.+/',''))




评分

参与人数 1金钱 +40 收起 理由
holley + 40 很给力!

查看全部评分

发表于 6 天前 | 显示全部楼层
holley 发表于 2024-5-11 17:23
我这边测试跟 _INetGetSource一样,报9223的错后,自动退出了。

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

发表于 6 天前 | 显示全部楼层
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)

评分

参与人数 1金钱 +25 收起 理由
holley + 25 很给力!

查看全部评分

发表于 3 天前 | 显示全部楼层
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)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-22 15:29 , Processed in 0.084324 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表