コード例 #1
0
ファイル: CatShareNet.java プロジェクト: mirror/jdownloader
  public void doFreeWebsite(
      final DownloadLink downloadLink, final boolean resumable, final int maxChunks)
      throws Exception, PluginException {
    checkErrorsWebsite(downloadLink, true);

    String dllink = null;
    long timeBefore = System.currentTimeMillis();
    boolean password = false;
    boolean skipWaittime = false;

    // only ReCaptcha
    Form dlForm = new Form();
    if (new Regex(brbefore, "(api\\.recaptcha\\.net|google\\.com/recaptcha/api/)").matches()) {
      dlForm = br.getForm(0);
      if (dlForm == null) {
        throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT, getPhrase("NO_RECAPTCHA_FORM"));
      }

      logger.info("Detected captcha method \"Re Captcha\" for this host");
      final Recaptcha rc = new Recaptcha(br, this);
      rc.setForm(dlForm);
      String id = br.getRegex("\\?k=([A-Za-z0-9%_\\+\\- ]+)\"").getMatch(0);
      rc.setId(id);
      for (int i = 0; i < 5; i++) {
        rc.load();
        File cf = rc.downloadCaptcha(getLocalCaptchaFile());
        String c = getCaptchaCode("recaptcha", cf, downloadLink);
        Form rcform = rc.getForm();
        rcform.put("recaptcha_challenge_field", rc.getChallenge());
        rcform.put("recaptcha_response_field", Encoding.urlEncode(c));
        logger.info(
            "Put captchacode "
                + c
                + " obtained by captcha metod \"Re Captcha\" in the form and submitted it.");
        dlForm = rc.getForm();
        // waittime is often skippable for reCaptcha handling
        // skipWaittime = true;
        submitForm(dlForm);
        logger.info("Submitted DLForm");
        if (br.containsHTML("(api\\.recaptcha\\.net|google\\.com/recaptcha/api/)")) {
          rc.reload();
          continue;
        }
        break;
      }

    } else {
      logger.warning("Unknown ReCaptcha method for: " + downloadLink.getDownloadURL());
      throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT, getPhrase("UNKNOWN_RECAPTCHA"));
    }

    /* Captcha END */
    // if (password) passCode = handlePassword(passCode, dlForm, downloadLink);
    if (br.containsHTML("(api\\.recaptcha\\.net|google\\.com/recaptcha/api/)")) {
      logger.info("5 reCaptcha tryouts for <" + downloadLink.getDownloadURL() + "> were incorrect");
      throw new PluginException(
          LinkStatus.ERROR_TEMPORARILY_UNAVAILABLE, getPhrase("RECAPTCHA_ERROR"), 1 * 60 * 1000l);
    }

    doSomething();
    checkErrorsWebsite(downloadLink, false);
    dllink = getDllinkWebsite();
    if (dllink == null) {
      logger.warning("Final downloadlink (String is \"dllink\") regex didn't match!");
      throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT, getPhrase("REGEX_ERROR"));
    }
    logger.info("Final downloadlink = " + dllink + " starting the download...");
    dl = jd.plugins.BrowserAdapter.openDownload(br, downloadLink, dllink, resumable, maxChunks);
    if (dl.getConnection().getContentType().contains("html")) {
      logger.warning("The final dllink seems not to be a file!");
      br.followConnection();
      doSomething();
      checkServerErrors();
      throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT, getPhrase("FINAL_LINK_ERROR"));
    }
    downloadLink.setProperty("freelink", dllink);
    dl.startDownload();
  }
コード例 #2
0
ファイル: DepoFileInfo.java プロジェクト: sn0w/jdownloader
 public void doFree(final DownloadLink downloadLink, final boolean resume, final int maxchunks)
     throws Exception, PluginException {
   boolean captcha = false;
   if (br.getURL().contains(SIMULTANDLSLIMIT) || br.getURL().contains(SIMULTANDLSLIMIT_2)) {
     throw new PluginException(
         LinkStatus.ERROR_HOSTER_TEMPORARILY_UNAVAILABLE,
         SIMULTANDLSLIMITUSERTEXT,
         1 * 60 * 1000l);
   } else if (br.getURL().contains(SERVERERROR)) {
     throw new PluginException(
         LinkStatus.ERROR_TEMPORARILY_UNAVAILABLE, SERVERERRORUSERTEXT, 5 * 60 * 1000l);
   }
   String free_link =
       br.getRegex("\\'(https?://depofile\\.info/[^<>\"]+\\?pt=[^<>\"]*?)\\'").getMatch(0);
   if (free_link == null) {
     throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
   }
   final String waittime =
       br.getRegex("\\$\\(\\'\\.download\\-timer\\-seconds\\'\\)\\.html\\((\\d+)\\);").getMatch(0);
   if (waittime != null) {
     sleep(Integer.parseInt(waittime) * 1001l, downloadLink);
   }
   dl = jd.plugins.BrowserAdapter.openDownload(br, downloadLink, free_link, RESUME, MAXCHUNKS);
   if (!dl.getConnection().isContentDisposition()) {
     br.followConnection();
     if (br.getURL().contains(SERVERERROR)) {
       throw new PluginException(
           LinkStatus.ERROR_TEMPORARILY_UNAVAILABLE, SERVERERRORUSERTEXT, 5 * 60 * 1000l);
     }
     final String captchaAction =
         br.getRegex(
                 "<div class=\"captchaPageTable\">[\t\n\r ]+<form method=\"POST\" action=\"(http://[^<>\"]*?)\"")
             .getMatch(0);
     final String rcID = br.getRegex("recaptcha/api/noscript\\?k=([^<>\"]*?)\"").getMatch(0);
     if (rcID == null || captchaAction == null) {
       logger.warning("reCaptcha_ID or captchaAction NULL - plugin seems to be broken!");
       throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
     }
     final Recaptcha rc = new Recaptcha(br, this);
     rc.setId(rcID);
     rc.load();
     for (int i = 0; i <= 5; i++) {
       File cf = rc.downloadCaptcha(getLocalCaptchaFile());
       String c = getCaptchaCode("recaptcha", cf, downloadLink);
       dl =
           jd.plugins.BrowserAdapter.openDownload(
               br,
               downloadLink,
               captchaAction,
               "submit=continue&submitted=1&d=1&recaptcha_challenge_field="
                   + rc.getChallenge()
                   + "&recaptcha_response_field="
                   + c,
               RESUME,
               MAXCHUNKS);
       if (!dl.getConnection().isContentDisposition()) {
         br.followConnection();
         rc.reload();
         continue;
       }
       break;
     }
     captcha = true;
   }
   if (!dl.getConnection().isContentDisposition()) {
     br.followConnection();
     if (captcha && br.containsHTML("(api\\.recaptcha\\.net|google\\.com/recaptcha/api/)")) {
       throw new PluginException(LinkStatus.ERROR_CAPTCHA);
     }
     throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
   }
   dl.startDownload();
 }