0

私のhtmlアプリケーションでは、JDKを直接ダウンロードする必要があります。このwgetコマンドはそれのために働くようです

wget --no-cookies --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com" "http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-x64.tar.gz"   

カスタムヘッダーを送信しているこのwgetを理想的にはvbscript行に変換するにはどうすればよいですか(vbscriptが好きですが、必要に応じてjavascriptで解決します)。PS --no-cookiesはオプションだと思いますが、確かではありません。直接ダウンロードリンクを使用できない理由は、オラクルがユーザーに下のダウンロードページで[同意する]をクリックするように要求しているためです。

このリンクは、最新のダウンロードHTMLページ用です。

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

これは最新の直接.exeリンクです([同意する]をクリックすると)
http://download.oracle.com/otn-pub/java/jdk/7u17-b02/jdk-7u17-windows-x64.exe

または、同意書の問題を回避する他の方法はありますか?

これは私のvbscriptコードであり、4行目に「不特定のエラー」が発生setRequestHeaderします。値inegpw_e24上記で指定した値も試しましたが、機能しませんでした。

Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
URL="http://download.oracle.com/otn-pub/java/jdk/7u17-b02/jdk-7u17-windows-x64.exe"
saveto="c:\java.exe"     
objXMLHTTP.setRequestHeader "Cookie", "gpw_e24=http%3A%2F%2Fwww.oracle.com"
objXMLHTTP.open "POST", URL, false
objXMLHTTP.send()

If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1 'adTypeBinary

objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0 'Set the stream position to the start

Set objFSO = Createobject("Scripting.FileSystemObject")
If objFSO.Fileexists(saveTo) Then objFSO.DeleteFile saveTo
Set objFSO = Nothing

objADOStream.SaveToFile saveTo
objADOStream.Close
Set objADOStream = Nothing
End if

Set objXMLHTTP = Nothing

' Done
WScript.Quit
4

1 に答える 1

1

ファイルをダウンロードするには、名前がCookieで値がgpw_e24 = http%3A%2F%2Fwww.oracle.comのリクエストヘッダーを追加する必要があります。

vbscriptのコードを使用してファイルをダウンロードする(無効な証明書エラーをバイパスする)場合は、追加してみてください

xHttp.setRequestHeader "Cookie", "gpw_e24=http%3A%2F%2Fwww.oracle.com"

または、スクリプトでwget.exeを取得して呼び出すこともできます

http://gnuwin32.sourceforge.net/packages/wget.htmからバイナリパッケージをダウンロードします(必要なのはwget.exeのみで、必要なdllがいくつかある場合があります)

upd:おそらくこのバイナリのwget.exe http://community.openscg.com/se/oscg_nixutils.jspがより良い選択でしょう(依存関係がないため)

upd:これを試しましたが、oracle.comは403を返します。WGETコマンドも機能しません

Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
URL="http://download.oracle.com/otn-pub/java/jdk/7u17-b02/jdk-7u17-windows-x64.exe"
saveto="c:\\Users\\Sanya_Zol\\INET_ALL\\2013\\_tmp\\20130326\\java-dl.exe"     
objXMLHTTP.open "POST", URL, false
objXMLHTTP.setRequestHeader "Cookie", "gpw_e24=http%3A%2F%2Fwww.oracle.com%2Ftechnetwork%2Fjava%2Fjavase%2Fdownloads%2Fjdk7-downloads-1880260.html"
objXMLHTTP.send()

If objXMLHTTP.Status = 200 Then
    Set objADOStream = CreateObject("ADODB.Stream")
    objADOStream.Open
    objADOStream.Type = 1 'adTypeBinary

    objADOStream.Write objXMLHTTP.ResponseBody
    objADOStream.Position = 0 'Set the stream position to the start

    Set objFSO = Createobject("Scripting.FileSystemObject")
    If objFSO.Fileexists(saveTo) Then objFSO.DeleteFile saveTo
    Set objFSO = Nothing

    objADOStream.SaveToFile saveTo
    objADOStream.Close
    Set objADOStream = Nothing
    Set objXMLHTTP = Nothing
Else
    MsgBox objXMLHTTP.Status
End if
于 2013-03-26T12:17:31.970 に答える