Web
3.6k 词
Java leraning Note v.2集合嵌套在Map集合中再放List集合: 123456789101112131415161718192021222324252627package com.D2;import java.util.*;/** * 统计投票人数 ***/public class MapTest { public static void main(String[] args) { **Map<String, List<String>> data = new HashMap<>();** //存入学生数据 List<String> selects = new ArrayList<>(); Collections.addAll(selects,"A","C"); data.put("luoyong",selects); List<...
Web
7.1k 词
Note of Java LearningJava 语法基础引用Java中有引用的概念,类似于C语言的指针。 例如改变指向数组指针(引用数组)的值: 数组也好,字符串通过地址引用也好,都与指针如出一辙嘛。 for each12345678public class Main { public static void main(String[] args) { int[] ns = { 1, 4, 9, 16, 25 }; for (**int n : ns**) { System.out.println(n); } }} int n定义变量,“**:**”用于遍历数组。 此时n直接拿到数组的元素,无需索引,若用ns[i]这种形式存在索引。 输入输出123456789101112Scanner scanner = new Scanner(System.in);// 创建Scanner对象System.out.print(&qu...
Web
864 词
前言最近刚开学比较闲,想写个简单的js插件练练手,刚好看某些评论区低能评论太多,举办侠又有限,就想写个脚本匹配关键字批量举办 基本思路通过B站页面的INITAL_STATE方法获取视频av号,再通过Ajax对api接口发起请求获取评论列表,遍历后将评论aid存到数组,最后循环举办。 关键功能函数为获取评论列表和批量举办,都是发起Ajax请求的函数。 懒得具体写函数的编写过程了,都是很清楚的思路,也就用了JQuery的$.ajax()函数和异步执行的sleep()函数比较新鲜吧。 具体源码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912...
766 词
最近一直在和python打交道,就想顺便学点Flask漏洞,也算打打python后端框架基础吧。 Flask搭建后端服务众所周知python也可用用来写后端,最简单的框架就是Flask,例如: 12345678910from flask import Flaskapp = Flask(__name__) @app.route('/')# route装饰器将url与下面的函数链接起来def hello_world(): return 'helloworld!'if __name__ == '__main__': app.run(host='0.0.0.0',port=5000,debug=True) # host为0.0.0.0则为暴露在公网,可从任意IP访问 上面的python文件运行时会在5000端口跑web服务,访问https://IP:5000/ 返回hello world!的字符串。 上面的例子为返回简单的字符串,也可用模板渲染html源码在浏览器显示: 123456789...
Web
1.7k 词
前言如前所述,前段时间写完B站开播推送后,又陆陆续续修了一些bug加了几个功能,不过都比较无聊,最近又想写个404开播推送用来看holo,才发现这个项目相当有意思,和B站的推送完全不同。而且就我所知nonebot2没有推送404开播信息的插件,所以写下来给后来者参考。当然致命的问题仍然是没用异步,很容易阻塞。 基本逻辑和关键源码F12监听网络找了半天,终于找到了直播状态相关的url接口,也就是https://www.youtube.com/youtubei/v1/updated_metadata?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8油管的直播页面与B站一样是Ajax动态页面,不过直播信息的XHR文件并非是GET请求,而是POST请求方式,所以自然也无法通过改变url获取不同管人的直播信息。没办法,只能通过对比不同页面内以POST方式发送的JSON文件,来找到底是通过哪个参数确定特定管人了。 油管的管人与B站UP主有UID类似,频道主页也有一个唯一固定的参数,即频道ID,因此我一开始以为多半是依据这个确定管人。然而从HTTP请求头的...
Web
2.5k 词
之前写爬虫的时候想找B站的直播流接口抓源,结果发现了个人主页有个监听直播间状态的XHR,就心血来潮想写个开播提醒的QQ机器人,顺便研究了下现有的机器人框架。 go-cqhttp协议层和nonebot2框架层搭建查了下才发现之前大名鼎鼎的酷Q已经是昨日黄花了,不过现在也有较为完整的QQbot协议onebot了,综合考虑了下决定用比较简单的GO-CQhttp搭建,具体的搭建很容易,查文档就行,具体就是找相应的下下来再改个yml配置文件,为了方便下面api文件的编写,最好用websocket反向代理。 Websocket是与http不同的另一种协议,优势是可以做到双向的通信,在推送上比用HTTP更高效,不过websocket不能用一般的Flask编写后端,再加上直接写后端api可扩展性不好,因此就用nonebot2的框架好了,具体的搭建参考文档即可,其实就是pip下依赖和修改配置文件,之后的插件调用在bot.py修改。 简单解释下cqhttp与nonebot2的关系,cqhttp是onebotQQ机器人协议的具体Go实现,运行在服务器的端口,将QQ服务器发送至机器人QQ号的内容进行符合...
Web
965 词
无聊的前言前几天溜阿松有点多,心血来潮想到一个有意思的炒作点子。但要实现需要几十个视频封面,虽然F12找图片直链很容易,但一个一个下实在有点麻烦,刚好在学python的requests库,就想写个爬虫全爬下来。 爬虫基本思路爬虫有很多写法,Java,JavaScript,Python都可以,但python的requests库很方便,最常用的明显是python爬虫。在具体代码实现层面,大多数爬虫都有非常相似的结构: 分析网页结构,找出有规律的接口 利用requests库发起请求 这两个过程是通用的,但对下面的操作,静态网页与动态网页不同: 对静态网页,利用beautifulsoup库解析页面抓取内容对动态网页,利用json库解析得到的json数据静态网页即在浏览网页过程中没有浏览器与服务器交互的网页,此时Ctrl+u与F12审查元素得到的源码相同,直接发起请求,再用bs4库解析网页源码内容即可. bs4库也是非常好用的python解析库,对于爬虫,找到需要爬取部分的网页源码,然后注意其周围唯一的元素名或class名再用find_all()具体解析即可。 例如: 12345678...
Web
1.8k 词
引言前几天复习C语言,摸鱼了几天之后准备去学校的考试平台上做个题练练手,结果太久没登忘记密码了😓结果发现重置密码只需身份证号,而身份证号这种信息在同学之间几乎完全可见,忍不住想到有意思的事。 不过有个问题,重置之后受害者发现登陆不了,只需要重新重置一次不就可以了?那重置似乎也没什么意义……又想了想,如果我能写个脚本,不断重置密码,在受害者重置完到输入密码登录的间隔中又重置了一次密码,岂不就可以做到始终让受害者卡在登录和重置页面了吗?听起来有意思,刚好最近我又在鼓捣**curl** ,对用shell发起请求比较熟悉,就着手试着写了下。 注:因为我在楼下的二手书店里淘来的Linux教程写shell编程用的bash,以下基于bash语法。 简单的实现如上所述,不断发起请求需要用到循环,就去查了下shell脚本中循环的语法: 12345for((i=0;;i++))do echo "hello world!" pwddone 因为for循环的第二个遍历条件为空,故如上的脚本将无限循环输出hello world和当前目录(pwd)。 下一步就是如何发起修...