暂未成功,本文暂无更新
分类目录归档:云乞讨
通过dd方式,将Linux服务器,安装为Windows系统的技术实践,含推荐的dd镜像源地址 2021-12-02
段落1、需求描述,就是要一个可供远程的windows系统
1、太太发来指令,需要挂机一个学习类型的网站,网站主要是需要在线挂机,播放视频,挂学习时间
根据其需求,我们这里,使用PVE的环境,创建一台Windows系统,我们可以通过MSDN原版的ISO镜像方式安装系统。
我这里是PVE的虚机VPS环境,也可以通过dd的方式,正好可以来演示一下,一般可以在不提供Windows镜像的云服务器上,如何安装Windows系统。
2、购买的海外KVM架构的VPS服务器,商家只支持Linux系统的模板,也可以通过这个方法将当前的Linux系统,dd为Windows系统
段落2、比较靠谱的Windows镜像网站
- 推荐natee制作的windows系列镜像 网站 https://dd.nat.ee/ (可能已关闭,2022-03-08 更新)
- 推荐秋水逸冰制作的windows系统镜像 网站 https://teddysun.com/
段落3、使用的dd脚本为Vicer开发的
安装环境
# apt-get install wget
使用命令dd系统
# bash InstallNET.sh -dd http://10.11.11.239:8000/WINDOWS_VIP_WIN7_2012/vip-win7-ent-sp1-x64-cn.vhd.gz
上面的这个地址,你们可以根据自己的需要,选择NATEE,或者秋水,或者其他的
SSD/NVMe盘的VPS性能比较好,一般dd速度比较快,dd安装完成,务必及时修改远程桌面的端口,默认账号的密码,默认账号的名称,非常重要,务必不要耽误太久,网络上很多扫3389的爆破机器人
判断dd是否完成,可以本地设置一个长ping,Windows命令为
ping -t xx.xx.xx.xx
段落4、附录
备注1,整个dd过程,是无值守的安装方式,一般正常情况都是一步到位,ping通之后一会儿,就可以使用远程桌面登录
备注2,在dd过程中,可以从你的VPS的供应商提供的HTML5/VNC里面观看自己VPS的dd的过程
备注3,一般1核/1GB内存/15G磁盘的配置,推荐dd为Windows7;2核/2GB内存/20GB磁盘的VPS配置,推荐dd为Windows10
2022-03-07 增补的章节
段落5、几个dd包下载的网站
A、系统dd包下载网 https://dd.1234234.xyz/
B、NATEE镜像站点 http://a.iplc.best/natee/
全过程的视频演示,YouTube:

苹果iPhone iPad设备上的TikTok收看指南 2022-08-20
本文是一篇简略的TikTok收看指南
2022-04-20 更新教程,增加打开TikTok黑屏的排障,增加GeoIP拦截SG提醒
2022-08-20 更新教程,增加2个域名
TikTok 会有2种检测环境方式
- 检测设备当前SIM卡所归属的运营商,如果是CN/HK区域的,不支持服务
- 检测设备当前的IP地址,如果是CN/HK区域的,不支持服务
故而,为了收看TikTok,针对上面的限制,应该采取如下的办法
- 拔出手机中含CN/HK区域的SIM卡
- 将TikTok的相关域名全部指向到代理跳板
选择下方的”配置”,选择”default.conf”最右侧的”i”,选择”规则”,选择”+”
依次添加下方的域名到proxy链的规则,20220414更新域名清单
相关域名规则,如下:
# > TikTok USER-AGENT,TikTok* DOMAIN-SUFFIX,akamaiedge.net DOMAIN-SUFFIX,akamaized.net DOMAIN-SUFFIX,app-measurement.com DOMAIN-SUFFIX,appsflyer.com DOMAIN-SUFFIX,byteoversea.com DOMAIN-SUFFIX,edgekey.net DOMAIN-SUFFIX,googleapis.com DOMAIN-SUFFIX,ibytedtos.com DOMAIN-SUFFIX,ibyteimg.com DOMAIN-SUFFIX,ipstatp.com DOMAIN-SUFFIX,muscdn.com DOMAIN-SUFFIX,musical.ly DOMAIN-SUFFIX,sgpstatp.com DOMAIN-SUFFIX,snapkit.com DOMAIN-SUFFIX,snssdk.com DOMAIN-SUFFIX,tik-tokapi.com DOMAIN-SUFFIX,tiktokcdn.com DOMAIN-SUFFIX,tiktokcdn-us.com DOMAIN-SUFFIX,tiktok.com DOMAIN-SUFFIX,tiktokv.com DOMAIN-SUFFIX,ttwstatic.com DOMAIN-SUFFIX,bytegecko-i18n.com DOMAIN-SUFFIX,pitaya-clientai.com DOMAIN-KEYWORD,-tiktokcdn-com

将上述的规则,添加到你自己的跳板客户端即可。
如果是Shadowrocket,可以直接纯文本编辑,以快速添加规则。20220414更新快速规则配置。
如下的为打开TikTok出现黑屏的排障过程,逐个检查确认
1,手机,设置,通用,地区,非中国
2,手机,设置,隐私,定位,关闭
3,拔掉SIM手机卡
4,确认你的梯子供应商,未配置对GeoSite-CN和GeoIP-CN的拦截,因为TikTok使用的部分阿里云新加坡机房的IP在GeoSite/GeoIP规则中,判定为CN,被你的梯子服务拦截了
5,如果打开TikTok还是黑屏,删除TikTok软件,重新下载TikTok的App,确保TikTok是最新版本即可
6,不要用126/163/qq/CN-HK手机号注册账号
DOMAIN-SUFFIX,edgekey.net,PROXY DOMAIN-SUFFIX,akamaiedge.net,PROXY DOMAIN-SUFFIX,akamaized.net,PROXY DOMAIN-SUFFIX,app-measurement.com,PROXY DOMAIN-SUFFIX,appsflyer.com,PROXY DOMAIN-SUFFIX,byteoversea.com,PROXY DOMAIN-SUFFIX,edgekey.net,PROXY DOMAIN-SUFFIX,googleapis.com,PROXY DOMAIN-SUFFIX,ibytedtos.com,PROXY DOMAIN-SUFFIX,ibyteimg.com,PROXY DOMAIN-SUFFIX,ipstatp.com,PROXY DOMAIN-SUFFIX,muscdn.com,PROXY DOMAIN-SUFFIX,musical.ly,PROXY DOMAIN-SUFFIX,sgpstatp.com,PROXY DOMAIN-SUFFIX,snapkit.com,PROXY DOMAIN-SUFFIX,snssdk.com,PROXY DOMAIN-SUFFIX,tik-tokapi.com,PROXY DOMAIN-SUFFIX,tiktokcdn.com,PROXY DOMAIN-SUFFIX,tiktokcdn-us.com,PROXY DOMAIN-SUFFIX,tiktok.com,PROXY DOMAIN-SUFFIX,tiktokv.com,PROXY DOMAIN-SUFFIX,ttwstatic.com,PROXY DOMAIN-SUFFIX,bytegecko-i18n.com,PROXY DOMAIN-SUFFIX,pitaya-clientai.com,PROXY
操作步骤,苹果手机, 视频讲解,YouTube地址 https://www.youtube.com/watch?v=7QQeZZlGSWs
- 更正内容,suffix – 为后缀的意思,视频中口误,说成了前缀。
- 更正内容,视频中,实际添加规则时候,把akamaized.net输错了为akamaized.com,实际需要添加的域名以本文上方给到的为准!
苹果平板, iPad,实际操作示范,平板不需要考虑SIM卡的干扰因素,简单一些
TikTok 收看指南
苹果手机 https://dasmz.com/?p=793 https://youtu.be/7QQeZZlGSWs
苹果平板 https://dasmz.com/?p=793 https://youtu.be/Ut2BCz_3K-o
安卓 https://dasmz.com/?p=921 https://youtu.be/fj8gjnosz8Y

通用代理池项目,功能型函数,检测通用代理是否可用 2021-11-24
// 依赖的2个模块 # pip3 install requests # 网络请求的 # pip3 install pysocks # 支持socks的
import requests def checkProxyStatus(TargetURL, aUA, aProxy, aTimeout): """ runCheckProxyStatus(TargetURL, aUA, aProxy, aTimeout) 依赖模块 requests pysocks 参数 TargetURL 用于检测的一个网站地址 参数 aUA 一个随机的User-Agent 参数 aProxy 需要检测的那个代理 格式为 vtype://ip:port 参数 aTimeout 超时的时间 返回值,依据状态码是否为200,判定为是,返回 字符 Y 返回值,依据状态码是否为200,判定为否,返回 字符 N """ try: myHeader = {"User-Agent": aUA} myProxy = {'http': aProxy, 'https': aProxy} aRSP = requests.get(url = TargetURL, headers = myHeader, proxies = myProxy, timeout = aTimeout) if aRSP.status_code == 200: return 'Y' else: return 'N' except Exception as e: return 'N'
# 实际测了如下的一段代码,通过。 import requests def checkProxyStatus(TargetURL, aUA, aProxy, aTimeout): """ runCheckProxyStatus(TargetURL, aUA, aProxy, aTimeout) 依赖模块 requests pysocks 参数 TargetURL 用于检测的一个网站地址 参数 aUA 一个随机的User-Agent 参数 aProxy 需要检测的那个代理 格式为 vtype://ip:port 参数 aTimeout 超时的时间 返回值,依据状态码是否为200,判定为是,返回 字符 Y 返回值,依据状态码是否为200,判定为否,返回 字符 N """ try: myHeader = {"User-Agent": aUA} myProxy = {'http': aProxy, 'https': aProxy} aRSP = requests.get(url = TargetURL, headers = myHeader, proxies = myProxy, timeout = aTimeout) if aRSP.status_code == 200: return 'Y' else: return 'N' except Exception as e: return 'N' v = checkProxyStatus(TargetURL = 'https://www.duckduckgo.com', aUA = 'Python', aProxy = 'socks5://127.0.0.1:10808', aTimeout = 3) print(v) # 在本地10808的v2代理开着时候,上面的代码,正常返回 字符 Y

通用代理池项目,功能型函数,PostgreSQL数据库的连接 2021-11-22
使用的模块为psycopg2
安装方式:
pip3 install psycopg2-binary
模块测试
#!/usr/bin/python3 # -*- coding: utf-8 -*- import psycopg2 # PostgreSQL 数据入库模块 正确执行返回Y 否则返回N 增 / 删 / 改 def runDataInPostgreSQLDB(aHost, aPort, aDB, aUser, aPass, aSQL): """ Connect to the PostgreSQL database server. insert/delete/update""" conn = None try: print(' + Database connection START') conn = psycopg2.connect(dbname = aDB, user = aUser, password = aPass, host = aHost, port = aPort) cur = conn.cursor() cur.execute(aSQL) conn.commit() cur.close() return 'Y' except (Exception, psycopg2.DatabaseError) as e: print(e) return 'N' finally: if conn is not None: conn.close() print(' + Database connection CLOSE') # PostgreSQL 数据读取模块 正确返回数据列表 错误返回空列表 def runDataOutPostgreSQLDB(aHost, aPort, aDB, aUser, aPass, aSQL): """ Connect to the PostgreSQL database server. select""" conn = None try: print(' + Database connection START') conn = psycopg2.connect(dbname = aDB, user = aUser, password = aPass, host = aHost, port = aPort) cur = conn.cursor() cur.execute(aSQL) data = cur.fetchall() cur.close() return data except (Exception, psycopg2.DatabaseError) as e: print(e) return [] finally: if conn is not None: conn.close() print(' + Database connection CLOSE') aSQL = "select vtype,ip,port from mdata limit 3;" vData = runDataOutPostgreSQLDB(aHost = '127.0.0.1', aPort = 5432, aDB = "你的数据库实例名称", aUser = "你的数据库用户名", aPass = "你的数据库密码", aSQL = "一个SQL") print(vData)
// 测试结果 root@PostgreSQLDatabase:~/src/invoker# python3 tmp1058.py + Database connection START + Database connection CLOSE [('socks4', '203.207.52.38', 5430), ('socks4', '103.146.170.244', 5678)] root@PostgreSQLDatabase:~/src/invoker#
如果用命令行连接数据库 # psql -d 你的数据库实例名称 -h 127.0.0.1 -p 5432 -U 你的数据库用户名 -W

通用代理池项目,功能型函数,验证端口Port是否正确 2021-11-24
user@server:~$ cat tmp1358.py def isActivePort(port): """ isActivePort(port) 参数 port,字符串 用途,判断端口port字符串是否正确 返回值,判定为是,返回 字符串 'Y' 返回值,判定为否,返回 字符串 'N' """ try: if int(port) >= 1 and int(port) <= 65535: return 'Y' else: return 'N' except Exception as e: return 'N' data1 = 'somedata' data2 = '0' data3 = '65536' data4 = '2048' v1 = isActivePort(port = data1) v2 = isActivePort(port = data2) v3 = isActivePort(port = data3) v4 = isActivePort(port = data4) print(f"{data1} - {v1}") print(f"{data2} - {v2}") print(f"{data3} - {v3}") print(f"{data4} - {v4}") user@server:~$ python3 tmp1358.py somedata - N 0 - N 65536 - N 2048 - Y user@server:~$
# 2021-11-24 更新为 def isActivePort(port): """ isActivePort(port) 参数 port,字符串 用途,判断端口port字符串是否正确 返回值,判定为是,返回 字符串 'Y' 返回值,判定为否,返回 字符串 'N' """ try: if port.isdigit() and int(port) >= 1 and int(port) <= 65535: return 'Y' else: return 'N' except Exception as e: return 'N'

通用代理池项目,功能型函数,验证IPv4地址是否正确 2021-11-10
isActiveIPv4(ip) 参数 ip,字符串 用途,判断ip字符串是否为合法的IPv4地址 依赖模块,ipaddress 返回值,判定为是,返回 字符串 'Y' 返回值,判定为否,返回 字符串 'N'
user@server:~$ cat tmp1348.py import ipaddress def isActiveIPv4(ip): """ isActiveIPv4(ip) 参数 ip,字符串 用途,判断ip字符串是否为合法的IPv4地址 依赖模块,ipaddress 返回值,判定为是,返回 字符串 'Y' 返回值,判定为否,返回 字符串 'N' """ try: vBLACKIPs = ['0.0.0.0','255.255.255.255'] if ipaddress.IPv4Address(ip) and ip not in vBLACKIPs: return 'Y' else: return 'N' except Exception as e: return 'N' data1 = 'datastring' data2 = '127.0.0.1' data3 = '192.168.1.1' data4 = '0.0.0.0' v1 = isActiveIPv4(ip = data1) v2 = isActiveIPv4(ip = data2) v3 = isActiveIPv4(ip = data3) v4 = isActiveIPv4(ip = data4) print(f"{data1} - {v1}") print(f"{data2} - {v2}") print(f"{data3} - {v3}") print(f"{data4} - {v4}") user@server:~$ python3 tmp1348.py datastring - N 127.0.0.1 - Y 192.168.1.1 - Y 0.0.0.0 - N user@server:~$

通用代理池项目,功能型函数,验证通用代理类型 2021-11-10
检查一个字符串,是否是通用代理”http”,”https”,”socks4″,”socks5″的类型,是否满足,满足判定,返回”Y”,否则,返回”N”
user@server:~$ cat tmp1221.py def isActiveValueType(s): """ isActiveValueType(s) 参数 s,字符串 用途,判断字符串是否在 ["http","https","socks4","socks5"] 中 返回值,判定为是,返回 字符串 'Y' 返回值,判定为否,返回 字符串 'N' """ vDataUnit = ["http","https","socks4","socks5"] if s in vDataUnit: return 'Y' else: return 'N' data1 = 'somedata' data2 = 'http' data3 = 'socks5' data4 = 'linux6' v1 = isActiveValueType(s = data1) v2 = isActiveValueType(s = data2) v3 = isActiveValueType(s = data3) v4 = isActiveValueType(s = data4) print(f"{data1} - {v1}") print(f"{data2} - {v2}") print(f"{data3} - {v3}") print(f"{data4} - {v4}") user@server:~$ python3 tmp1221.py somedata - N http - Y socks5 - Y linux6 - N user@server:~$

通用代理池,爬虫项目,采集模块构建,静态型采集任务 2021-11-09
采集网站 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()
