我知道有一个文件中装有NSIS,下载文件然后执行的逻辑很可能使用NSIS中的ExecWait、等NSIS功能
问题是:
我试图替换NSIS从网上下载的文件,这样我就可以做一些测试,首先我改变了主机,用web.py制作了一个http服务器,所以原始的url被劫持到了我自己的服务器上,我放了一个重定向下载文件链接,在服务器上我看到了200,但在客户端我使用一些工具发现它返回了400。(我直接在浏览器中打印url,下载被劫持的文件效果很好)我不知道出了什么问题。
web.py代码
def GET(self, name):
raise web.redirect('/static/test.exe')
日志4文件下载
GET 302 240 Redirect url1,url2
GET 302 300 Redirec url2,url3
GET 200 1.27 M application/octet-stream url3
所以我想知道
是什么原因导致了400个代码的问题,即使在我的python-webpy服务器上也显示了200个代码?(sry我不熟悉http)
任何熟悉NSIS的人,有没有其他解决方案我可以做这次劫持?我试过用R3挂钩,但似乎失败了,因为我不知道用API挂钩。
过去我听说Fiddler可以帮助我完成任务,但流量只是不显示在Fiddler中,也许NSis下载Fiddler无法捕获?使用HttpAnalyze,我可以看到流量(登录),但我不能做我想做的事,所以有没有其他工具可以满足我的需求(也许制定了一个规则,当xxurl替换为myurl时)?
NSIS有不同的下载插件,有些是自定义HTTP客户端,有些使用WinINet。
两个最流行的插件是NSISdl和INetC。NSISdl是一个自定义HTTP客户端,但它应该支持301和302重定向,INetC使用WinINet,如果Internet Explorer正常工作,它应该可以工作。
我建议您只需将主机文件中的域名重定向到127.0.0.1,并在本地运行一个简单的HTTP文件服务器,无需任何重定向,只需重新创建所需的文件夹结构并使用安装程序请求的文件名。如果这有效,那么你可能必须使用WireShark来找出重定向失败的原因。。。
@Anders给了我一些好建议。但由于url不是静态的(\xx.exe xx是随机的),所以我无法创建与url文件夹结构相同的本地路径:(
最后我发现它可能和过去的web.py响应中的Http头有关。直接重定向到webpy服务器上的静态文件是错误的web.redirect('/static/test.exe')
,即使在过去我也可以在浏览器中下载它,但它的头可能无法满足原始exe的需求。
这是我的解决方案
在hosts文件中将域名重定向到127.0.0.1,并在本地运行一个简单的HTTP文件服务器。然后仍然使用web.py,但使用更改重定向
web.HTTPError('301', {'Location': 'http://myfileurl'})
它起作用了:)