如何检测某网络上的文件是否存在?
是这样的,一软件作者不定期在QQ群上公布软件升级版,并且会给出下载链接。而这个下载链接的格式是固定的,如这一次发布的链接:
http://files.webname.com/dir/soft1.2.1.3.zip
下一次发布的链接可能就是:
http://files.webname.com/dir/soft1.2.2.8.zip
也就是每次发布只有版本号发生变化,而别的都不变的。
没有网页可以浏览这些下载文件列表,如直接访问:http://files.webname.com/dir/
会提示错误:不可访问
=================================================
我的想法就是写个脚本每天去检测一次有没有新版本发布
也就是我怎么能得到新版本发布的链接?
这个软件版本号有时也是不连续的,如果有重大升级,可能从1.2.1.1直接升到1.3.1.0,甚至直接到2.0.0.0
但有两个规律:一是新版本号肯定比正在用的版号大;二则就是一定是四段式的
请教一下,这样的要求有什么方法可以方便达到?
当然,检测我正在用的这个软件本版本我会。
最好是能快速检测出来(我只需要检测,并不需要真的下载,因为软件比较大,50M以上),别要花太长时间。
次好就是别给服务器在短时间造成大量多次连接,如几秒钟内连服上成千上万次这样的(因为这样我猜可能被服务器封我的ip了) 除了遍列所有可能的版本号还真想不出其它办法 本帖最后由 nangua111111 于 2013-2-15 12:17 编辑
检测自己下载文件,通过比较可以吗.获取不了原文件,{:face (356):}想不出了 1310到2000也就700次,每次试一千次就行了,在原来的版本号加1000 可以通过文件大小和创建时间叛断更新吧,思路应是这样 回复 1# runsnake
这种基本只有循环解决了。能采取的技巧不多
#include <WinHttp.au3>
Local $sVer, $aVer, $sFileName, $sPartFileName, $iFlag = 0
$sVer = '2-0-3'
$sPartFileName = 'SirenOfShame'
$aVer = StringSplit($sVer, '-', 2)
For $i = $aVer + 1 To 9
$sFileName = $sPartFileName & '-' & $aVer & '-' & $aVer & '-' & $i & '.msi'
If CheckNetFile($sFileName) Then
$iFlag = 1
ExitLoop
EndIf
Next
If $iFlag Then
MsgBox(0, 'Info', 'New Ver: ' & $sFileName)
Exit
Else
For $i = $aVer + 1 To 9
For $j = 0 To 9
$sFileName = $sPartFileName & '-' & $aVer & '-' & $i & '-' & $j & '.msi'
If CheckNetFile($sFileName) Then
$iFlag = 1
ExitLoop 2
EndIf
Next
Next
EndIf
If $iFlag Then
MsgBox(0, 'Info', 'New Ver: ' & $sFileName)
Exit
Else
For $i = $aVer + 1 To $aVer + 1
For $j = 0 To 9
For $k = 0 To 9
$sFileName = $sPartFileName & '-' & $i & '-' & $j & '-' & $k & '.msi'
If CheckNetFile($sFileName) Then
$iFlag = 1
ExitLoop 2
EndIf
Next
Next
Next
EndIf
If $iFlag Then
MsgBox(0, 'Info', 'New Ver: ' & $sFileName)
Else
MsgBox(0, 'Info', 'No new Version')
EndIf
Func CheckNetFile($sFileName)
ConsoleWrite($sFileName & @CRLF)
Local $hOpen, $hConnect, $hRequest, $sHeader, $iFlag
$hOpen = _WinHttpOpen()
$hConnect = _WinHttpConnect($hOpen, "siren-of-shame.googlecode.com")
$hRequest = _WinHttpOpenRequest($hConnect, Default, "files/" & $sFileName)
_WinHttpSendRequest($hRequest)
_WinHttpReceiveResponse($hRequest)
$sHeader = _WinHttpQueryHeaders($hRequest)
_WinHttpCloseHandle($hRequest)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
$iFlag = StringRegExp($sHeader, "(?i)Last-Modified.*\nExpires")
Return $iFlag
EndFunc
用程序登录QQ群,获取QQ群窗口的文本,再判断有无新的版本,这样不可以吗?
页:
[1]