MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

    自定义滑块或者在登陆时会一直循环调用滑块处理

    开发交流
    2
    8
    409
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • lngex
      lngex 最后由 编辑

      替代文字,如图,目前图片处理还在弹出

      1 条回复 最后回复 回复 引用 0
      • Karlatemp
        Karlatemp 最后由 编辑

        版本和复现代码呢

        lngex 2 条回复 最后回复 回复 引用 0
        • lngex
          lngex 最后由 编辑

          此回复已被删除!
          1 条回复 最后回复 回复 引用 0
          • lngex
            lngex @Karlatemp 最后由 编辑

            此回复已被删除!
            1 条回复 最后回复 回复 引用 0
            • lngex
              lngex @Karlatemp 最后由 编辑

              @Karlatemp

                  /**
                   * 处理滑动验证码.
                   * 返回 null 以表示无法处理验证码, 将会刷新验证码或重试登录. 抛出一个 LoginFailedException 以正常地终止登录, 抛出任意其他 Exception 将视为异常终止
                   * Returns:
                   * 验证码解决成功后获得的 ticket.
                   */
                  @SneakyThrows
                  @Override
                  public Object onSolveSliderCaptcha(@NotNull Bot bot, @NotNull String s, @NotNull Continuation<? super String> continuation) {
                      return SliderCaptchaWindows.instance(s).assembly().show(true);
                  }
              
              /**
               * 滑块验证码处理窗口
               *
               * @author LiaoJianbo
               * @version 1.0.0
               * @CreateTime: 2022-06-27  11:23
               * @since 1.0.0
               */
              @Data
              @Accessors(chain = true)
              public class SliderCaptchaWindows {
              
                  /**
                   * 窗体容器
                   */
                  public Container contentPane;
                  /**
                   * 窗口
                   */
                  private JFrame windows;
                  /**
                   * 滑块链接
                   */
                  private String url;
                  /**
                   * 滑块结果
                   */
                  private String ticket;
                  /**
                   * 单击结果
                   */
                  private Boolean isClick = false;
              
                  private SliderCaptchaWindows() {
              
                  }
              
                  /**
                   * 获取实例
                   *
                   * @param url 滑块年纪额
                   * @return 当前对象
                   */
                  public static SliderCaptchaWindows instance(String url) {
                      JFrame windows = new JFrame("滑块处理");
                      SliderCaptchaWindows sliderCaptchaWindows = new SliderCaptchaWindows()
                              .setWindows(windows).setContentPane(windows.getContentPane())
                              .setUrl(url);
                      windows.setSize(1000, 160);
                      windows.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                      windows.setLayout(null);
                      windows.setResizable(false);
                      return sliderCaptchaWindows;
                  }
              
                  public static void main(String[] args) {
                      System.out.println(SliderCaptchaWindows.instance("www.baidu.com").assembly().show(true).ticket());
                  }
              
                  /**
                   * 窗口状态
                   *
                   * @param visible true开启,false关闭
                   */
                  public SliderCaptchaWindows show(boolean visible) {
                      windows.setVisible(visible);
                      return this;
                  }
              
                  public SliderCaptchaWindows assembly() {
                      // 标签
                      JLabel tis = new JLabel("复制’滑块‘到浏览器,按F12打开控制台,电子network->HXR,拖动滑块,查看响应,复制ticket到ticket");
                      contentPane.add(tis);
                      tis.setBounds(5, 5, 1000, 20);
                      // url
                      JLabel urllabel = new JLabel("滑块");
                      contentPane.add(urllabel);
                      urllabel.setBounds(5, 30, 30, 20);
                      JTextField jTextField = new JTextField(this.url);
                      contentPane.add(jTextField);
                      jTextField.setBounds(40, 30, 950, 20);
                      // ticket
                      JLabel ticketlabel = new JLabel("ticket");
                      contentPane.add(ticketlabel);
                      ticketlabel.setBounds(5, 60, 30, 20);
                      JTextField ticketField = new JTextField();
                      contentPane.add(ticketField);
                      ticketField.setBounds(40, 60, 950, 20);
                      // 提交
                      JButton submit = new JButton("提交");
                      contentPane.add(submit);
                      submit.setBounds(450,85,60,30);
                      submit.addActionListener(listener -> {
                          setTicket(ticketField.getText().trim());
                          setIsClick(true);
                          this.show(false);
                      });
                      submit.doClick();
                      return this;
                  }
              
                  /**
                   * 获取滑块结果
                   * @return ticket
                   */
                  public String ticket() {
                      while (!this.getIsClick()){
                          try {
                              Thread.sleep(2000);
                          } catch (InterruptedException e) {
                              e.printStackTrace();
                          }
                      }
                      this.isClick = false;
                      return this.ticket;
                  }
              }
              
              1 条回复 最后回复 回复 引用 0
              • Karlatemp
                Karlatemp 最后由 编辑

                换 kotlin 或

                https://github.com/Kotlin-zh/KEEP/blob/master/proposals/coroutines.md#实现细节

                http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.coroutines.intrinsics/-c-o-r-o-u-t-i-n-e_-s-u-s-p-e-n-d-e-d.html

                lngex 1 条回复 最后回复 回复 引用 0
                • Moved from BUG反馈 by  Karlatemp Karlatemp 
                • lngex
                  lngex @Karlatemp 最后由 编辑

                  @Karlatemp 有没有优雅一点的解决方案

                  1 条回复 最后回复 回复 引用 0
                  • Karlatemp
                    Karlatemp 最后由 编辑

                    换kotlin

                    1 条回复 最后回复 回复 引用 0
                    • 1 / 1
                    • First post
                      Last post
                    Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact