const jsdom = require("jsdom"); const { JSDOM } = jsdom; const userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' const dom = newJSDOM(``, { url: "https://example.org/", referrer: "https://example.com/", userAgent: userAgent, }); window = dom.window console.log(window.navigator.userAgent)
以上代码输出的结果为: Mozilla/5.0 (darwin) AppleWebKit/537.36 (KHTML, like Gecko) jsdom/24.0.0 在userAgent中有很明显的jsdom特征
再次尝试使用如下代码:
1 2 3 4 5 6 7
const jsdom = require("jsdom"); const { JSDOM } = jsdom; const dom = newJSDOM(); window = dom.window navigator = window.navigator navigator.userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' console.log(window.navigator.userAgent)
以上代码输出的结果仍然为: Mozilla/5.0 (darwin) AppleWebKit/537.36 (KHTML, like Gecko) jsdom/24.0.0
jsdom正确设置userAgent
1 2 3 4 5 6 7 8 9 10 11 12 13
const jsdom = require("jsdom"); const { JSDOM } = jsdom; const userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' const resourceLoader = new jsdom.ResourceLoader({ userAgent: userAgent }); const dom = newJSDOM(``, { url: "https://example.org/", referrer: "https://example.com/", resources: resourceLoader, }); window = dom.window console.log(window.navigator.userAgent)
以上代码输出的结果为: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 通过以上方式则可以正常设置userAgent
select name from mysql.proc where db='数据库名'; 或者 select routine_name from information_schema.routines where routine_schema='数据库名'; 或者 showprocedure status where db='数据库名';
DELIMITER // CREATEPROCEDURE proc2(INparameterint) begin declare var int; set var=parameter+1; if var=0then insertintoMATCHESvalues(17,9,9,9,9); end if; if parameter=0then updateMATCHESset LOST=LOST+1; else updateMATCHESset LOST=LOST+2; end if; end; // DELIMITER ;
2.2 case语句
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
DELIMITER // CREATEPROCEDURE proc3 (inparameterint) begin declare var int; set var=parameter+1; case var when0then insertintomatchesvalues(17,9,9,9,9); when1then insertintomatchesvalues(18,9,9,9,9); else insertintomatchesvalues(19,9,9,9,9); endcase; end; // DELIMITER ;
2.3 循环语句
2.3.1 while ···· end while
1 2 3 4 5 6 7 8 9 10 11 12
DELIMITER // CREATEPROCEDURE proc4 (inparameterint) begin declare var int; set var=0; while var<6 do insertintomatchesvalues(var,9,9,9,9); set var=var+1; end while; end; // DELIMITER ;
2.3.2 repeat···· end repeat 它在执行操作后检查结果,而 while 则是执行前进行检查。
1 2 3 4 5 6 7 8 9 10 11 12 13
DELIMITER // CREATEPROCEDURE proc5() begin declare v int; set v=0; repeat insertintomatchesvalues(v,8,8,8,8); set v=v+1; until v>=5 end repeat; end; // DELIMITER ;
DELIMITER // CREATEPROCEDURE proc6() begin declare v int; set v=0; LOOP_LABLE:loop insertintomatchesvalues(v,7,7,7,7); set v=v+1; if v >=5then leave LOOP_LABLE; end if; end loop; end; // DELIMITER ;
2.3.4 ITERATE迭代 ITERATE 通过引用复合语句的标号,来从新开始复合语句:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
DELIMITER // CREATEPROCEDURE proc10() begin declare v int; set v=0; LOOP_LABLE:loop if v=3then set v=v+2; ITERATE LOOP_LABLE; end if; insertintomatchesvalues(v,5,5,5,5); set v=v+1; if v>=5then leave LOOP_LABLE; end if; end loop; end; // DELIMITER ;