采集网站 https://www.socks-proxy.net/ 采集页面 网站主页面 采集形式 非动态 匹配 IP:PORT 匹配规则 pttn = '(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5})' 备注说明 都是一些socks4类型的数据 最后一次人工校验时间 2021-10-09 20:07 import re s = "<tr><td>210.56.244.134</td><td>4145</td><td>AU</td><td class='hm'>Australia</td><td>Socks4</td>" pttn = r"<tr><td>(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})</td><td>(\d{1,5})</td><td>.*?</td><td class='hm'>.*?</td><td>(\S{1,6})</td>" data = re.findall(pttn, s) print(data)
Debian10系统下,安装chrome浏览器,安装chrome driver 2021-11-08
Debian10系统下,安装chrome浏览器,安装chrome driver 2021-11-08
# apt-get update # apt-get install wget curl unzip # mkdir -p /root/src # cd /root/src # wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb # apt install /root/src/google-chrome-stable_current_amd64.deb // 大约600多MB的,需要一定的安装时间 // 提示 Download is performed unsandboxed as root as file '/root/src/google-chrome-stable_current_amd64.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied) # ln -s /usr/bin/google-chrome-stable /usr/bin/chrome # /usr/bin/chrome -version // 本次安装到的稳定版本为 Google Chrome 95.0.4638.69 # wget https://chromedriver.storage.googleapis.com/95.0.4638.69/chromedriver_linux64.zip # mv chromedriver chromedriver.95.0.4638.69 # ln -s /root/src/chromedriver.95.0.4638.69 /root/src/chromedriver // https://chromedriver.chromium.org/downloads // https://chromedriver.storage.googleapis.com/index.html?path=95.0.4638.69/
使用下面的Python3,selenium的程序,进行功能验证!
#!/usr/bin/python3 # -*- coding:utf-8 -*- import time from selenium import webdriver aDriver = '/root/src/chromedriver' aScreenShot = '/var/www/html/ScreenShot.png' def run_Chrome(aDriver, aUA, aURL): try: chromeOptions = webdriver.ChromeOptions() chromeOptions.add_argument('--headless') # 无界面模式 chromeOptions.add_argument("--window-size=1920x1080") # 窗口大小 chromeOptions.add_argument('--disable-gpu') # 关闭GPU加速 chromeOptions.add_argument("--mute-audio") # 关闭声音 chromeOptions.add_argument("--no-sandbox"); # 无沙箱 chromeOptions.add_argument("--disable-dev-shm-usage") # chromeOptions.add_argument("--disable-extensions") # 关闭扩展程序 chromeOptions.add_argument("--disable-images") # 关闭图片加载 chromeOptions.add_argument("--log-level=OFF") # 无需日志 chromeOptions.add_argument(f"--user-agent={aUA}") # 修改UA # chromeOptions.add_argument(f'--proxy-server={aProxy}') # 修改谷歌浏览器的代理 d = webdriver.Chrome(executable_path = aDriver, options = chromeOptions) # d.set_window_size(1920, 1080) # 设置分辨率 (宽, 高) d.get(aURL) # 打开需要的网址 time.sleep(3) # 给浏览器的网页加载的时间,方式1 # webdriver.implicitly_wait(3) # 给浏览器的网页加载的时间,方式2 # element_present = EC.presence_of_element_located((By.ID, 'element_id')) # 根据某个元素是否加载,判断是否完成页面加载,方式3 # WebDriverWait(driver, timeout).until(element_present) print("标题 %s" % d.title) # 网站标题 print("URL %s" % d.current_url) # 当前的URL print("源代码 %s" % d.page_source) # 当前的页面渲染后的代码 d.save_screenshot(aScreenShot) # 保存一下截图 # d.page_source -- 字符串 return d.page_source except Exception as e: print(e) return "" finally: d.close() def go2web(): try: aUA = 'Mozilla/5.0 (Windows NT 4.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/555.36' vWebContent = run_Chrome(aDriver = aDriver, aUA = aUA, aURL = 'http://某个网址/') print(vWebContent) except Exception as e: print(e) if __name__ == '__main__': go2web()
iptables 转发流量 2021-11-07
使用iptables转发流量的命令语法,简单示例一个TCP转发
iptables -A PREROUTING -p tcp -m tcp --dport 中转服务器入口端口号 -j DNAT --to-destination 目标服务器IP地址:目标服务器端口号 iptables -A POSTROUTING -d 目标服务器IP地址/32 -p tcp -m tcp --dport 目标服务器端口号 -j SNAT --to-source 中转服务器本地IP地址 iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 中转服务器入口端口号 -j ACCEPT
Python3框架FLASK知识点 2021-11-2
基础安装
# apt-get update # apt-get install python3-pip python3 python3-gevent
基础的一个示例
#!/usr/bin/python3 # -*- coding: utf-8 -*- # 2021-11-02 # Dasmz import flask app = flask.Flask(__name__) @app.route('/', methods=['GET']) def index(): return '<p>Hello World!</p>' if __name__ == "__main__": app.run(host='0.0.0.0',port=41012)
# 服务端 root@cafe560b8380:~# python3 1102-1634.py * Serving Flask app '1102-1634' (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off * Running on all addresses. WARNING: This is a development server. Do not use it in a production deployment. * Running on http://172.17.0.3:41012/ (Press CTRL+C to quit) x.×.12.211 - - [02/Nov/2021 08:34:42] "GET / HTTP/1.1" 200 - x.x.12.211 - - [02/Nov/2021 08:34:42] "GET /favicon.ico HTTP/1.1" 404 - x.x.12.211 - - [02/Nov/2021 08:35:16] "GET / HTTP/1.1" 200 -
# 客户端,验证请求 curl http://198.*.*.196:41012/ <p>Hello World!</p>
#!/usr/bin/python3 # -*- coding: utf-8 -*- # 2021-11-02 # Dasmz import flask app = flask.Flask(__name__) # 主路由 @app.route('/', methods=['GET']) def index(): return '<p>Hello World!</p>\n' # 增加一个名称的路径参数 @app.route('/home/<name>', methods=['GET']) def home(name): return '<p>Hello World!<br><br> Hi, <b>{}</b>.</p>\n'.format(name) if __name__ == "__main__": app.run(host='0.0.0.0',port=41012) # curl http://IPv4:41012/ # curl http://IPv4:41012/home/david # curl http://IPv4:41012/home/J.J.HarrySon
#!/usr/bin/python3 # -*- coding: utf-8 -*- # 2021-11-02 # Dasmz import flask app = flask.Flask(__name__) # 主路由 @app.route('/', methods=['GET']) def index(): return '<p>Hello World!</p>\n' # 增加一个名称的路径参数 @app.route('/home/<name>', methods=['GET']) def home(name): return '<p>Hello World!<br><br> Hi, <b>{}</b>.</p>\n'.format(name) # 增加API,返回客户端的UA @app.route('/API/getUA', methods=['GET']) def getUserAgent(): return '{}\n'.format(flask.request.headers.get('User-Agent')) if __name__ == "__main__": app.run(host='0.0.0.0',port=41012) # curl http://IPv4:41012/ # curl http://IPv4:41012/home/david # curl http://IPv4:41012/home/J.J.HarrySon # curl http://IPv4:41012/API/getUA
收集的测速链接地址 更新于2021-10-31
从网络收集到的一些测速链接的地址,酌情选用 波兰 http://waw.lg.webhorizon.in/50MB.test 英国OVH http://51.195.146.211/LookingGlass/25MB.test 英国OVH http://51.195.146.211/LookingGlass/50MB.test 英国OVHhttp://51.195.146.211/LookingGlass/100MB.test 荷兰 http://lg-nl.viridweb.com/25MB.test 荷兰 http://lg-nl.viridweb.com/50MB.test 荷兰 http://lg-nl.viridweb.com/100MB.test 荷兰 http://lg.hostslim.nl/LookingGlass/100M.test 美国-Spokane-WA https://wa.hostodo.com/10MB.test 美国-Spokane-WA https://wa.hostodo.com/100MB.test 美国-Las-Vegas-NV https://lv.hostodo.com/10MB.test 美国-Las-Vegas-NV https://lv.hostodo.com/100MB.test 美国-Miami-FL https://mia.hostodo.com/10MB.test 美国-Miami-FL https://mia.hostodo.com/50MB.test 美国-Miami-FL https://mia.hostodo.com/100MB.test 荷兰-Lelystad-The-Netherlands http://lg.hostslim.nl/LookingGlass/100M.test 日本-Equinix-TY8-Japan http://tyo.lg.webhorizon.in/50MB.test 荷兰-Naaldwijk https://lg-nl.incognet.io/10MB.test 荷兰-Naaldwijk https://lg-nl.incognet.io/100MB.test 芬兰-Helsinki https://lg-fin.incognet.io/10MB.test 芬兰-Helsinki https://lg-fin.incognet.io/100MB.test 英国-Kent https://looking-glass.cloudxtiny.co.uk/25MB.test 德国-Niederlande https://lg.nl.haendler.it/100MB.test 荷兰-Wormer-Netherlands http://ams-test.softshellhosting.com/25MB.test 澳大利亚-Sydney https://lg.quantumcore.com.au/15MB.test 澳大利亚-Sydney https://lg.quantumcore.com.au/25MB.test 澳大利亚-Sydney https://lg.quantumcore.com.au/50MB.test 罗马尼亚-Bacau http://proof.hazi.ro/100MB.test
在Ubuntu桌面环境下,通过dd给树莓派写入镜像到TF/SD卡 2021-10-10
需求
手头有一个上古时期的树莓派,型号是B+ V1.2,可以给它一个镜像,用来当作玩具。
镜像官网: https://www.raspberrypi.com/software/operating-systems/
一、我这里,只是需要最简单的服务器环境,故而,选择下载
二、哈希校验
c5dad159a2775c687e9281b1a0e586f7471690ae28f2f2282c90e7d59f64273c
# sha256sum 2021-05-07-raspios-buster-armhf-lite.zip c5dad159a2775c687e9281b1a0e586f7471690ae28f2f2282c90e7d59f64273c 2021-05-07-raspios-buster-armhf-lite.zip
三、解压,文件大小约为1.8GB,所以至少需要容量为2GB的TF/SD存储卡
# unzip 2021-05-07-raspios-buster-armhf-lite.zip # ls -lh 2021-05-07-raspios-buster-armhf-lite.img -rw-r--r-- 1 fd fd 1.8G May 7 23:00 2021-05-07-raspios-buster-armhf-lite.img
四、写入,我这里选择的一个16GB的TF/SD卡
# fdisk -l Disk /dev/sda: 15 GiB, 16110321664 bytes, 31465472 sectors Disk model: STORAGE DEVICE Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x6c586e13 # dd bs=1M if=2021-05-07-raspios-buster-armhf-lite.img of=/dev/sda 1788+0 records in 1788+0 records out 1874853888 bytes (1.9 GB, 1.7 GiB) copied, 203.858 s, 9.2 MB/s
五、在boot分区下,写入一个空白的名称为SSH文件
六、TF/SD卡插入树莓派,接上网线,接上电源
OBS初始化设置 2021-9-27
OBS设置
- 设置,通用,语言,简体中文
- 设置,通用,主题,System
- 输出,串流,视频比特率 4000Kbps
- 输出,录像,路径,D:/OBS/
- 输出,录像,质量,近似无损的质量
- 输出,录像,格式,MP4
- 输出,录像,编码器,硬件
- 视频,基础分辨率,输出分辨率,都选择1920*1080
- 热键,开始录制,F1
- 热键,结束录制,F2
软路由 x86的CPU Openwrt LEDE使用教程 2021-9-23
简单描述配置x86软路由的过程,我自己的笔记本电脑为Linux系统
步骤一、格式化SSD固态硬盘
设备, * 2.5英寸 USB3.0外置硬盘盒 1个 * 2.5英寸 120GB SATA接口的固态硬盘 1个 一般30GB的固态硬盘容量足够安装Openwrt,我这个是闲置的一块SSD,把SSD固态硬盘,通过外置的USB盒子连接到自己的电脑,打开终端,通过fdisk命令找到该盘的盘符 # fdisk -l 执行格式化的操作 # fdisk /dev/sda
步骤二、自己编译Openwrt的镜像或者下载网络上现成的镜像
图省事的,可以直接选用Koolshare固件,http://fw.koolcenter.com/
2021-9-23
当前的x86版本的固件下载地址 http://fw.koolcenter.com/LEDE_X64_fw867/openwrt-koolshare-router-v2.37-r17471-8ed31dafdf-x86-64-generic-squashfs-combined.img.gz
使用命令解压
gzip -d openwrt-koolshare-router-v2.37-r17471-8ed31dafdf-x86-64-generic-squashfs-combined.img.gz
// 自己编译Openwrt固件的教程,不在这篇文章里描述,将来另开章节
步骤三、将固件的image文件dd进硬盘
直接使用dd命令,进行镜像数据的写盘,最好用root用户执行dd,参考命令,其中/dev/sda,需根据实际的写。
root@pc:~# dd bs=1M if=./openwrt-koolshare-router-v2.37-r17471-8ed31dafdf-x86-64-generic-squashfs-combined.img of=/dev/sda 700+1 records in 700+1 records out 734527488 bytes (735 MB, 700 MiB) copied, 2.98561 s, 246 MB/s root@pc:~#
// bs 参数 是每次写入的块的大小,一般1MB可以了
// if 参数 是输入的文件,这里是镜像文件
// of 参数 是输出的设备,这里是我那块120G的固体硬盘,我这里是/dev/sda,你们根据实际的写。
步骤四、设备安装
将刚刚写入镜像数据的盘,从硬盘盒中取出,连接进软路由设备中,一般就是SATA数据和电源供电,两根线的连接,很简单。
步骤四、软路由的初始化配置
配置自己的电脑网口到192.168.1.10,用网线连接到软路由的LAN口,在软路由的离线状态,修改的内容如下,WEB登录192.168.1.1 默认用户root 默认密码koolshare
- 修改,system,system,Language语言设置,简体中文
- 修改,系统,系统,常规设置,主机名,GWCU
- 修改,系统,管理权,SSH访问,接口,LAN
- 修改,网络,接口,确认LAN/WAN端口工作于哪个物理端口,贴标签纸
// 本次,我这里,eth0-LAN, eth1-WAN
// 因为软路由设备性能超赞,故而,WAN口使用拨号桥接到光猫 - 修改,网络,接口,协议,PPPoE,输入自己的宽带账号,宽带密码
- 修改,网络,负载均衡,这个如果多宽带运营商WAN接入的,可以配置
- 修改,系统,进阶设置,配置网络,直接修改LAN的ipaddr,到10.X.X.X的内网网段,这个可以不设置,我自己用10的段,习惯了。
- 修改,酷软,离线安装,v.2.3.7版本的客户端
- 系统,关机
步骤五、软路由连接到光猫
软路由的WAN1 到联通光猫的LAN1
软路由的WAN2 到电信光猫的LAN1
软路由的LAN1 到千兆交换机的LAN
// 一般光猫,有的只有LAN1是千兆口,LAN2是IPTV,其他是缩配的百兆口
// 网线,推荐使用六类的网线,家用足够
开机,Power On,骑上我的小骆驼,高速稳定的家庭数据的核心,软路由就上线了。
Python3 基础知识 2021-9-23
一、Python3 的数据类型
数字 number
字符串 string
列表 list
元组 tuple
集合 set
字典 dict
Python3 的协程 asyncio 2021-9-22
asyncio 资料备忘
CPU Bound -- Multi Processing I/O Bound Fast I/O Limited Number of Connections -- Multi Threading I/O Bound Slow I/O Many Connections -- Asyncio
协程 coroutine
import asyncio import datetime async def getNow(): return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") async def getRuntime(): v = await getNow() print(v) asyncio.run(getRuntime()) # 使用async关键字 声明异步方法 # 使用await关键字 等待协程执行完成 # 使用asyncio.run(某个async方法) 执行