[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 15# happy886rr


    排查完毕

TOP

本帖最后由 bbaa 于 2017-7-2 14:07 编辑

回复 14# 老刘1号


    之前崩的原因是有个空用户名的家伙........
  1. unset($json["Username"][""]);
复制代码

TOP

回复 17# bbaa


    举手,我干过。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

本帖最后由 老刘1号 于 2017-7-2 18:02 编辑

回复 1# bbaa
回复 18# codegay
回复 15# happy886rr
取平均数递归法,最多计算6次就可得出结果
欢迎测试~(存Bat)
  1. '&cls&@echo off&cscript -nologo -e:vbscript "%~0"&pause&exit
  2. With CreateObject("MSXML2.XMLHTTP")
  3. .Open "POST", "http://bbaass.tk/math/", False
  4. .setRequestHeader "CONTENT-TYPE","application/x-www-form-urlencoded"
  5. .Send "send=reg&username=老刘"
  6. End With
  7. Do
  8. Bisection -1,101,0
  9. Loop
  10. Sub Bisection(low,high,s)
  11. Mid_=(High+Low)\2
  12. if s<=7 then
  13. Select Case Cstr(Math(Mid_))
  14. Case "="
  15. wscript.echo "Win!The number is "&Mid_
  16. Case ">"
  17. WScript.Echo ">,so try "&Low&","&Mid_
  18. Bisection Low,Mid_,s+1
  19. Case "<"
  20. WScript.Echo "<,so try "&Mid_&","&High
  21. Bisection Mid_,High,s+1
  22. End Select
  23. end if
  24. End Sub
  25. Function Math(num)
  26. With CreateObject("MSXML2.XMLHTTP")
  27. .Open "POST","http://bbaass.tk/math/", False
  28. .setRequestHeader "CONTENT-TYPE","application/x-www-form-urlencoded"
  29. .send "send=Answer&math=" & num & "&username=老刘"
  30. Math = Split(Split(.responseText,",")(2),"""")(3)
  31. End With
  32. End Function
复制代码
1

评分人数

TOP

回复 19# 老刘1号
不过偶尔还会出现下标越界。而且有几次计算了20多次才猜中正确的数,你的算法还不是标准二分,比较费内存。如果是猜测1到10000之内的数,你的程序就非常缓慢。 把那个递归取消了,有递归的都不是标准二分。

TOP

本帖最后由 老刘1号 于 2017-7-2 17:55 编辑

回复 20# happy886rr


    嗯,猜20多次是因为服务端数字变更了(正常最多7次)
下标越界是服务器没返回JSON,导致无法分割得到符号
尴尬的是,0和100不在范围里面(失误,已修正)……
总之就是递归然后除2取整
当时一脑抽就用的递归而不是循环╮(╯_╰)╭
算是自己研发的变种了吧
感谢大佬鼓励<v<

TOP

回复 19# 老刘1号


    添加tokens具体看 1#

TOP

回复 22# bbaa


    晕,早说啊
算了,就酱紫吧~
懒得动手了~

TOP

本帖最后由 reKonquer 于 2017-7-2 18:49 编辑

回复 1# bbaa


    来个高级的 用到了okhttp,gson
  1. package com.rekonquer.math;
  2. import com.google.gson.Gson;
  3. import okhttp3.*;
  4. import java.io.IOException;
  5. /**
  6. * Author: MagicDroidX
  7. */
  8. public class Main {
  9.     public static OkHttpClient HTTP_CLIENT;
  10.    
  11.     public static String token = null;
  12.     public static int min = 1;
  13.     public static int num = 50;
  14.     public static int max = 100;
  15.     public static void main(String[] args) throws IOException {
  16.         HTTP_CLIENT = new OkHttpClient.Builder()
  17.                 .build();
  18.         while (true) {
  19.             AnswerRequest request = new AnswerRequest();
  20.             request.math = num;
  21.             Response response = HTTP_CLIENT.newCall(
  22.                     new Request.Builder()
  23.                             .url("http://bbaass.tk/math/index.php")
  24.                             .post(new FormBody.Builder()
  25.                                     .add("send", "Answer")
  26.                                     .add("username", "reKonquer")
  27.                                     .add("math", String.valueOf(num))
  28.                                     .build()
  29.                             )
  30.                             .build()
  31.             ).execute();
  32.             if (!response.isSuccessful()) {
  33.                 continue;
  34.             }
  35.             AnswerResponse answer;
  36.             try {
  37.                answer = new Gson().fromJson(response.body().string(), AnswerResponse.class);
  38.             } catch (Exception e) {
  39.                 continue;
  40.             }
  41.             if (answer == null) {
  42.                 continue;
  43.             }
  44.             if (token == null || token.equals(answer.tokens)) {
  45.                 token = answer.tokens;
  46.                 switch (answer.re) {
  47.                     case ">": {
  48.                         System.out.println(num + " 小了");
  49.                         max = num;
  50.                         break;
  51.                     }
  52.                     case "<": {
  53.                         System.out.println(num + " 大了");
  54.                         min = num;
  55.                         break;
  56.                     }
  57.                     case "=":
  58.                     default: {
  59.                         System.out.println("正确答案:" + num);
  60.                         token = null;
  61.                         continue;
  62.                     }
  63.                 }
  64.                 num = (int) ((min + max) / 2d);
  65.             } else {
  66.                 if (answer.re.equals("=")) {
  67.                     System.out.println("正确答案:" + num);
  68.                 }
  69.                 System.out.println("新的一局:" + token + " => " + answer.tokens);
  70.                 min = 1;
  71.                 max = 100;
  72.                 num = 50;
  73.                 token = answer.tokens;
  74.                 continue;
  75.             }
  76.         }
  77.     }
  78. }
  79. package com.rekonquer.math;
  80. /**
  81. * Author: MagicDroidX
  82. */
  83. public class AnswerResponse {
  84.     public int code;
  85.     public String re;
  86.     public String tokens;
  87. }
复制代码
网站崩了,本来能超过第一的
2

评分人数

    • codegay: 少年筋骨精奇,写得一手漂亮程序。技术 + 1
    • 老刘1号: 不明嚼栗技术 + 1

TOP

回复 24# reKonquer


    同志,你再不开我就超了你哈~

TOP

以下是模仿了happy和ro的程序写的。经过几次修改,应该是能比较长时间持续运行了。
这个网站一言不合就返回500错误或者无规律清空数据,在刚开始很困扰,很懵B。

后来长时间运行发现,也有可能极小概率请求后返回404或者跳转到首页。所以也必须要在关键代码上处理错误。
→_→代码丑。但是管用。
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on 2017-07-02 13:57:56
  4. @author: codegay
  5. python3 & 编辑器 == spyder
  6. """
  7. import requests
  8. import time
  9. apiurl = "http://bbaass.tk/math/"
  10. s = 0
  11. username = "codegay"
  12. data = {
  13.         'send': 'Answer',
  14.         'username': username,
  15.         'math': 0,
  16.         }
  17. def reg(username="codegay"):
  18.     data = {"send": "reg", "username": username}
  19.     try:
  20.         requests.post(apiurl, data=data)
  21.     except:
  22.         global s
  23.         s += 1
  24.         print("reg程序江化,错误+1s")
  25.         time.sleep(2)
  26. def answer(min=0, max=100):
  27.     answering = True
  28.     answercounter = 0
  29.     token = ''
  30.     global s
  31.     while answering:
  32.         math = data['math'] = round((min+max)/2)
  33.         try:
  34.             time.sleep(0.3)
  35.             post = requests.post(apiurl, data=data, timeout=6)
  36.             print(post.text)
  37.         except Exception as err:
  38.             s += 1
  39.             print(err)
  40.             print("程序江化,错误+1s", "    错误总次数:", s)
  41.             time.sleep(1)
  42.         else:
  43.             answercounter += 1
  44.             print("数字:", math, "    counter:", answercounter)
  45.             re = ''
  46.             if post.status_code == 500:
  47.                 reg()
  48.                 time.sleep(1)
  49.             elif post.status_code == 200:
  50.                 try:
  51.                     result = post.json()
  52.                 except:
  53.                     answering = False
  54.                     continue
  55.                 re = result['re']
  56.                 if token and token != result['tokens']:
  57.                     answering = False
  58.                     continue
  59.                 token = result['tokens']
  60.                 if re == '=':
  61.                     answering = False
  62.                 if re == ">":
  63.                     max = data['math']
  64.                 if re == "<":
  65.                     min = data['math']
  66.             else:
  67.                 s += 1
  68.                 print("远程目标服务器程序江化,错误+1s")
  69.                 time.sleep(1)
  70. reg()
  71. while True:
  72.     answer()
复制代码
2

评分人数

去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 26# codegay

把细节都考虑进去了,如果把user-agent修改为火狐浏览器,就好了。这个php服务器对py的请求会拒绝,只能伪造user-agent来实现高速和稳定的请求。

TOP

本帖最后由 523066680 于 2017-7-8 17:01 编辑

清零了?

写了一段代码查看赛跑情况
  1. use JSON;
  2. use Encode;
  3. use Try::Tiny;
  4. use Data::Dumper;
  5. use HTTP::Headers;
  6. use Time::HiRes qw/time sleep/;
  7. use IO::Handle;
  8. STDOUT->autoflush(1);
  9. use LWP::Simple;
  10. use LWP::UserAgent;
  11. our $user    = "vic3";
  12. our $website = 'http://bbaass.tk/math/';
  13. our ($user, $website, $headers);
  14. my ( $min, $max ) = (0, 100);
  15. my $test = int(($max + $min) / 2);
  16. my $data;
  17. our $ua = LWP::UserAgent->new( agent => 'Mozilla/5.0', timeout => 5 );
  18. our $res;
  19. my %ever;
  20. my %current;
  21. getData( \%ever );
  22. my $count = 0;
  23. while (1)
  24. {
  25.     getData(\%current);
  26.     $count = 0;
  27.     for my $k (reverse sort { $ever{$a} <=> $ever{$b} } keys %ever)
  28.     {
  29.         printf "%-10s %d + %d\n", $k, $ever{$k}, $current{$k} - $ever{$k};
  30.         last if ($count++ > 3);
  31.     }
  32.     print "\n";
  33.     sleep 10.0;
  34. }
  35. sub getData
  36. {
  37.     our $res;
  38.     my $href = shift;
  39.     my $data;
  40.     while (1)
  41.     {
  42.         $res = $ua->post( $website, [ username => $user, send => 'reg' ] );
  43.         $res = $ua->post( $website, [ username => $user, send => 'user' ] );
  44.         try { $data = decode_json( $res->content ); last; }
  45.         catch { sleep 2.0; printf "repeat\n" }
  46.     }
  47.     for my $e ( @{$data->{'user'}} )
  48.     {
  49.         ( $times, $name, $state ) = @$e;
  50.         $href->{$name} = $times;
  51.     }
  52. }
复制代码
  1. vic3       0 + 0
  2. bbaa       0 + 0
  3. vic        0 + 0
  4. vic2       55 + 10
  5. codegay    75 + 11
  6. vic3       0 + 0
  7. bbaa       0 + 0
  8. vic        0 + 0
  9. vic2       55 + 11
  10. codegay    75 + 11
  11. vic3       0 + 0
  12. bbaa       0 + 0
  13. vic        0 + 0
  14. vic2       55 + 12
  15. codegay    75 + 12
复制代码
1

评分人数

TOP

回复 26# codegay


    无规律清空是因为我偷懒没用数据库 导致多人请求时同时写文件挂掉
Happy应该知道

TOP

本帖最后由 523066680 于 2017-7-8 16:37 编辑

我在想能不能在别的网络上运行脚本,假冒 codegay 输入错误的数值来阻击他的刷新频率
(实测然并卵

TOP

返回列表