首页 文章

通过脚本下载Java JDK

提问于
浏览
4

我一直在使用以下命令通过脚本下载JDK 8u112 .

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

最近,它抛出ERROR 404:找不到,当你转到链接时,它显示Downloading Java JDK on Linux via wget is shown license page instead中的相同文本

我也试过了http://download.oracle.com/otn/java/jdk/8u112-b15/jdk-8u112-linux-x64.tar.gz但它抛出了401授权错误 .

这是否有新的工作?

1 回答

  • 0

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

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

    您需要将< username >和< password >替换为有效的登录Oracle站点 .

    更改 jdkTagjdkFileLink 的值以获取要下载的jdk版本 .

    oraclejdk.js

    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();
    

    download.sh

    #!/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}"
    

相关问题