当前位置: 首页 > 知识库问答 >
问题:

通过脚本下载Java JDK

封烈
2023-03-14
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u112-b15/jdk-8u112-linux-x64.tar.gz

这方面有新的工作吗?

共有1个答案

董喜
2023-03-14

wget似乎可以下载jdk的最新版本,但不能下载归档文件中的文件。因此,我使用casper.js脚本登录Oracle并下载。

下面是我下载JDK8U121日文版的脚本。当前脚本将只尝试下载,但重定向时将失败。我使用download.sh bash脚本扫描日志以获得带有session参数的url,并使用wget进行实际下载。

您需要将 替换为有效的 才能登录到Oracle站点。

var casper = require('casper').create({
  verbose: true,
  logLevel: 'info',  // debug
  pageSettings: {
    userAgent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36",
    loadImages: false,
    loadPlugins: false
  }
});

// login info
var loginUrl='http://www.oracle.com/webapps/redirect/signon?nexturl=https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html';
var username='<username>';
var password='<password>';

// accept license page info
var jdkUrl='http://www.oracle.com/technetwork/';
var jdkTag='jdk-8u121-oth-JPR';

// download jdk info
var jdkFileLink='jdk-8u121-oth-JPRXXXjdk-8u121-linux-x64.tar.gz';

// open login page
casper.start(loginUrl);

casper.thenEvaluate(function(username, password) {
//  this.capture('loginPage.png', {top:0, left:0, width:600, height:800});
    document.querySelector("#sso_username").value = username;
    document.querySelector("#ssopassword").value = password;
    doLogin(document.LoginForm);
}, {
     username: username,
     password: password
});

// login to oracle site
casper.then(function() {
  this.waitForUrl(jdkUrl, function() {
//    this.capture('jdkPage.png', {top:0, left:0, width:1200, height:800});
    this.evaluate(function(jdkTag) {
      disableDownloadAnchors(document, false, jdkTag);
      hideAgreementDiv(document, jdkTag);
      writeSessionCookie('oraclelicense', 'accept-securebackup-cookie');
    }, {
        jdkTag: jdkTag
    });
  }, null, null, 5000);
});

// accept license
casper.then(function() {
  this.waitFor(function checkLink() {
    return this.evaluate(function(jdkTag) {
      return (document.getElementById('agreementDiv' + jdkTag).getAttribute('style') === 'visibility: hidden;');
    }, {
        jdkTag: jdkTag    
    });
  }, function then() {
//    this.capture('acceptedLicense.png', {top:0, left:0, width:1200, height:800});
    downlink = this.evaluate(function(jdkFileLink) {
      var jdkElement = document.getElementById(jdkFileLink);
      if (jdkElement) {
        var jdkLink = jdkElement.getAttribute("href");
        jdkElement.click();
        return jdkLink;
      }
    }, {
      jdkFileLink: jdkFileLink
    });
  }, null, 5000);
});

casper.run();
#!/bin/bash

url=$(casperjs --web-security=no oraclejdk.js |grep "http://download.oracle.com/otn/java/jdk" $() | sed -e 's/^.*: //')
jdk=$(echo "${url}" | sed -e 's/^.*jdk-/jdk/' |sed -e 's/?.*//')
wget -O "${jdk}" "${url}"
 类似资料:
  • 问题内容: 使用PHP,我试图提供由于授权问题而不在网络可访问目录中的大文件(最大可能为200MB)。当前,我使用一个调用以及一些标头来提供文件,但是似乎PHP在发送之前先将其加载到内存中。我打算在共享托管服务器上进行部署,这将不允许我使用太多内存或添加自己的Apache模块(例如X- Sendfile)。 出于安全原因,我不能让我的文件位于可通过网络访问的目录中。有人知道我可以在共享主机服务器上

  • 本文向大家介绍如何通过PHP脚本下载大文件?,包括了如何通过PHP脚本下载大文件?的使用技巧和注意事项,需要的朋友参考一下 要通过PHP脚本下载大文件,代码如下- 示例 输出结果 这将产生以下输出- 函数“ readfile_chunked”(用户定义)具有两个参数:文件名和返回字节数的默认值“ true”,表示已成功下载大文件。声明了变量“ chunksize”,其中每个块需要读取的字节数。将'

  • 问题内容: 我有一个div标签,该标签通过ajax调用填充了脚本,但是脚本未执行。 有没有办法使脚本执行? 问题答案: 如果您使用jQuery的方法,它将解析出脚本标签并对其进行评估: 如果没有jQuery,则可以使用(1)正则表达式或(2)解析DOM树并查找脚本标签来自己编写。(#2是jQuery的执行方式)

  • ; 该脚本使用 HM VNISEdit 脚本编辑器向导产生 ; 安装程序初始定义常量 !define PRODUCT_NAME "下载专用程序" !define PRODUCT_VERSION "1.0" SetCompressor lzma ; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------ !include "MUI.nsh" ; MUI 预定义常量 !d

  • 我有这样的设置: 所有.飞镖只是导入脚本1.飞镖和脚本2.dart并调用它们的主要。目标是在细节下有一堆可以单独运行的脚本。此外,我想要一个单独的 all.dart 脚本,可以一次运行所有脚本。这将使调试单个脚本更简单,但仍允许所有脚本运行。 all.dart 脚本1.飞镖 脚本2.dart 所以,这是工作,我看到运行时预期的打印语句all.dart但我有两个问题。 首先,我必须在详细信息下软链接

  • 问题内容: 我在服务器端有一个Struts2操作,用于文件下载。 但是,当我使用jQuery调用操作时: 在Firebug中,我看到数据是通过 Binary流 检索的。我想知道如何打开 文件下载窗口 ,用户可以用它在本地保存文件吗? 问题答案: 这是我现在建议的一些注意事项: 需要相对较新的浏览器 如果预期文件 很大,则 您可能应该执行与原始方法(iframe和cookie)类似的操作,因为以下某