分享實用、有趣的教程、VPS評測......
原域名不用了,現更換為 yariaa.lol本博客地址:blog.yariaa.lol
Kai Carlo Cenat III 是一個非常有趣的Youtuber,更新的視頻很快,内容搞笑爲主、同時更新著熱門游戲,他對觀衆很用心,本人强烈推薦關注!!!?Kai Carlo Cenat III is a very interesting Youtuber. He updates videos quickly, the content is mostly funny, and he also updates popular games. He is very attentive to his audience. I highly recommend following him!!!?Youtube地址 || twitch地址
前言:如果你有更好的想法、更便捷的方法,可以在博客裏面留言聯係,或者加入我的TG頻道。喜歡我的文章可以訂閲我的TG頻道,同步更新本博客的文章。My wallet address:Tron:TPv9sCMBphTcsjtpYM3hpJ4FzjkTSas6LiEthereum:0x0b64A637885cD01EF8a1f55f49BBA85290Cf7c37Bitcoin:bc1pgqcdk6dxrcvek0ty48tadmpfa3vm63jya7awj0qgcu2jvpslan3sxenttf我需要一位外語精通的科技愛好者和我一起經營這個博客使機器翻譯的差錯得以彌補,以及討論一些有趣的問題,以便促進更好的文化交流,若您有興趣,可私信我的TGI need a technology enthusiast who is proficient in foreign languages to run this blog with me to make up for errors in machine translation and discuss some interesting issue
本文所有都是經過測試的,可走我的邀請鏈接領取5$賺取收益honeygain優點:這家收益很高,一個安卓設備兩天/三天1元左右,部署到VPS的要求很高,建議直接用自己的設備挂機,支持大陸地區IP不足:限制同一網絡下的設備數,可通過WireGuard來更換網絡節點挂機注冊地址以下可挂VPS:注意修改脚本内的值,<>要去掉(必須安裝Docker才可以運行下列脚本)traffmonetizer注冊地址docker run --name tm -d traffmonetizer/cli_v2 start accept --token <Your_Token>= --device-name <Your_Docker_Name>repocket注冊地址docker run --name repocket -e RP_EMAIL=<Your_Email> -e RP_API_KEY=<Your_Key> -d --restart=always repocket/repocketpacketstream注冊地址代碼後臺有,直接Docker部署e
環境:Linux合集脚本(快捷命令Tool):wget -O Tool https://blog.yariaa.lol/Script/Tool.sh; mv Tool /usr/local/bin/; cd /usr/local/bin/ && chmod +x Tool && bash Tool若出現以下内容:E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?運行:sudo rm /var/lib/dpkg/lock-frontend sudo rm /var/lib/dpkg/lockDebian/Ubuntu查看伺服器架構:apt install -y virt-what && virt-w
latest news:https://blog.yariaa.lol/plane/1795.htmlWe will continue to provide free VPN to help you break through the network firewall. You can register on our website to get your exclusive promotion link. You can earn commission through the invitation code.自家機場,已開放免費節點,歡迎使用。VIP用戶均可享受中轉流量服務,貴點的套餐轉發則更加穩定。免費用戶可搭配優選IP來提高網速體驗:教程地址探針地址雪莉云地址
可選:在綫優選IP網站。或者以下:儅機場節點套用Cloudflare CDN加速時,部分用戶會分配到較慢IP造成使用體驗不佳,所以帶來一期優選IP教程,來加速你用的機場節點優選IP前一定要關閉所有代理。優選IP不定時會失效可能,有可能被墻了,造成超時。,但沒有必要頻繁優選,一般來説能用蠻長時間的。原理:本地網絡直連VPN節點可能因綫路問題造成不穩定,通過優選Cloudflare IP獲取適合本地的IP作爲代理,於是此時通過本地 >> CDN IP >> 節點VPN前言:如何判斷是否為套用Cloudflare的節點呢?必要條件:WS協議。下面隨便選擇一個方案即可。A.只需要複製域名通過瀏覽器訪問,看看是否有類似以下内容B.將僞裝域名隨便填寫或者清空,看看能否正常連接,若修改后不能連接,那麽即該節點套用了Cloudflare(大部分適用。)那麽教程開始:1.下載CloudflareSpeedTest項目地址2.運行CloudflareST.exe3.複製優選的IP地址,打開你的節點,替換地址就可以了,其它不用動,最後連接測試
本文順序:Windows-安卓-IOSWindows:v2rayN、Clash安卓:NekoBoxIOS:Shadowrocketv2rayN教程開始:1.下載V2rayN:Github項目地址2.添加訂閲信息並啓動自動更新:3.手動更新一下訂閲:4.選擇一個節點5.訪問Google測試:測試地址Clash:項目地址填入訂閲地址后導入自行選擇規則吧。安卓教程開始:1.下載NekoBox:Github項目地址2.添加分組訂閲然後點擊更新就獲取到了配置,然後連接就好了參考地址IOS教程:1.海外蘋果商店下載 Shadowrocket或者可以選擇在綫安裝:下載地址1下載地址2下載地址32.選擇類型,然後添加訂閲地址(機場複製訂閲那裏獲取的鏈接):3.回到主頁面,更新一下節點信息,然後選擇一個節點,最後開啓就可以使用了參考地址
本次環境:Ubuntu 22首先域名解析到你的VPS IP確保80端口、3306端口沒有被占用。域名不能是子域名,例如a.com可以,a.a.com就不行(無法申請證書)。硬盤大約所需5G.有的商家提供的系統可能會不適配,可以通過DD系統來進行安裝。1.安裝1panelwget -O Tool https://blog.yariaa.lol/Script/Tool.sh; mv Tool /usr/local/bin/; cd /usr/local/bin/ && chmod +x Tool && bash Tool拉取庫git clone -b docker-compose --depth 1 https://github.com/cedar2025/Xboard && cd Xboard2.安裝 OpenResty、Mysql 5.7、Redis注意:若出現80端口被占用,通過lsof -i:80查看時哪個服務占用,然後禁止掉,再安裝。sudo service apache2 stop3.添加一個數據庫4.在Xboard目錄下執行,
條件:本地有ipv6環境最好,若沒有則選擇一個機場連接后含有ipv6的地址就行。IPV6環境檢測本次環境:Alpine,用本博客的一鍵脚本命令(若安裝失敗則可能需要修改DNS、GitHub解析等等...脚本裏面有一鍵修改)提示:脚本運行時選擇初始化環境再安裝其他脚本會比較方便。1.apk update && apk upgrade && apk add wget curl lsof sudo bash && wget -O Tool https://blog.yariaa.lol/Script/Tool.sh; mv Tool /usr/local/bin/; cd /usr/local/bin/ && chmod +x Tool && bash Tool2.安裝x-ui3.安裝完成后訪問[IPV6地址]:port訪問web頁面4.修改、保存、重啓。5.請求頭那裏修改的域名是你套在cloudflare上面開啓雲朵的域名。6.地址可以改成套用cdn的域名,僞裝域名不可修改!7.然後測試連接。
假設您有一臺Nat VPS想要通過Cloudflare CDN來優選IP給節點加速,或者有網站部署,想要通過域名訪問而不是後面再輸入端口號等...條件:域名一個,且綁定到Cloudflare假設我要使用的端口為4444,這裏我的域名是 test2.mukyu.asia以x-ui部署的節點爲例:
地區蠻多的,通過dvpnbot獲取APP,再瀏覽器打開QR碼自動跳轉APP,連接就可以使用了。
閑來無事,寫了這篇短文。翻墻對於中國大陸來説肯定是不提倡的,爲何封鎖翻墻?因爲政治。政客怕一些人翻墻后看了關於政治的,例如那些激進的大紀元啊,法輪功之類的東西,況且外網上的政治東西沒有大陸那種嚴格審查,倘若你是抱著求知識,例如翻墻查看更多的信息,有自己的信息過濾方式,那麽就沒啥問題,訪問GitHub之類啊,又不影響政客統治,條子抓你幹啥呢?不過這種概率只是顯著降低,畢竟世界之大無奇不有,你可能翻墻看個av都會被抓(哈哈),如果你是政客你就會明白這個規範是爲何,這始終是個不確定的因素。儅一個人抱著提高認知的態度去翻墻,那麽就沒必要去抓這種,因爲對於政客來説,不影響什麽,那些翻墻人員還有可能賺外國人的美金,多好哈哈哈哈。
假设列表[4,5,2,1,3],按从小到大排序。外层for循环是定义比较轮数,内层for循环指的是交换次数。那么就会两层for循环例如A(外)和B(内)且 A<len(列表长度)-1,因为五个元素,只需要比较四次。B<len(列表长度)-1-i(当前A循环的次数i),因为每轮最后一个元素都会变成最大的,于是后续就不需要进行重复比较。例如第一次循环,外层为0(下标),内层是0,然后通过判断元素下标来交换元素。第二次循环,外层下标为1,内层要额外除去第一轮排序的最后一个元素(因为已经有最大值在最后了,不需要比较)Y = [4,5,2,1,3]len = length(Y) // 假设 len 是获取列表长度的函数// 外层循环:控制比较的轮数// n个元素需要 n-1 轮比较for(var i = 0; i < len - 1; i++){// 内层循环:控制每轮比较的次数 // 每轮将当前未排序部分的最大元素“冒泡”到末尾 // 每次外层循环结束后,都会有一个元素(最大的)排到正确位置 for(var j = 0; j < len - 1 - i; j++){
java中的继承代表实例化一个子类,子类依旧可以调用父类的方法和属性,可以省去子类单独编写一些重复代码,例如eat、sleep这种,还有一些通用方法啊,在父类设置后直接子类继承,很方便。多态是指,针对某个类型的方法调用,其真正执行的方法取决于运行时期实际类型的方法。下面是关于继承与多态相关的代码:public class Main { public static void main(String[] args) { Person p = new Student(); System.out.println(p.num); //返回 1 p.run(); //返回 Student.run 不论加不加 override 只要是父类声明的非static方法,子类也有的同名方法,都会调用子类的方法。 System.out.println(p.name); //返回 jack // System.out.println(p.type); // 报错 因为引用了不在引用类型中的变量。 // p
下面的代码中,字符串其实并没有变,变的只是s的指向。// 字符串不可变 public class Main { public static void main(String[] args) { String s = "hello"; System.out.println(s); // 显示 hello s = "world"; System.out.println(s); // 显示 world } }以及这段代码中,输出的是hello,因为从s = "hello" 开辟了hello这个字符串的空间,还有s指向了hello这个字符串;t=s,s是个指针指向的是字符串,所以t也指向hello,那么当s被赋值为world时,s的指针指向了world字符串,并不影响原先的t指针,所以打印t依旧是hello。// 字符串不可变 public class Main { public static void main(String[] args) { St
网址:aHR0cHM6Ly9mdXd1Lm5oc2EuZ292LmNuLw==/(ㄒoㄒ)/~~哎呀这个老烦人了,我明明参数都解决了,就是不给通过,我寻思着算法应该没问题啊。等大佬来解惑。可以看到需要分析 x-tif-signature、signData、encData1.x-tif-signature的话直接就能搞定了。测试过了是原生的sha256.2.signData也在这个f函数内部被赋值,往下断点。这是未进入 t.data.signData 函数内部的t值{ "transformRequest": {}, "transformResponse": {}, "timeout": 30000, "xsrfCookieName": "XSRF-TOKEN", "xsrfHeaderName": "X-XSRF-TOKEN", "maxContentLength": -1,
使用fabric来批量控制VPS运行脚本:from fabric import Connection, Config from loguru import logger # 服务器列表(包含密码) servers = [ {"host": "1223:3333:103:218::32", "user": "root", "port": 22, "password": "your_password_1"}, # {"host": "192.168.1.102", "user": "root", "port": 2222, "password": "your_password_2"} ] comm = input('请输入命令(回车跳过):') comm = comm if comm else &q
有这么一种网站,访问请求会发送三次,第三次才能返回响应结果,并且前两次返回521状态码,那么这个网站就是采用了加速乐Cookie反爬。首先看第一次请求,响应的是一段js代码,这段js代码执行后是设置cookie的。然后是第二次请求,响应的也是段js,这段js是设置第二次的cookie的(__jsluid_s由第一次访问url后服务器那边返回设置的)。第二次的请求需要携带第一次请求返回js执行后设置的cookie。即__jsl_clearance_s为第一次返回内容js执行后的结果。第三次请求,变的只有__jsl_clearance_s,也就是第二次返回的js执行的一些操作导致cookie的更变。所以我们要逆向的目标就是第二次返回的js内容。把js复制下来然后贴到控制台代码段那里分析因为该代码更改的是cookie,所以我们提前控制台输入hook cookie代码,然后提前下断点。// hook cookie代码 (function () { 'use strict'; var org = document.cookie.__lookupSetter__('cookie')
补环境主要是补DOM和BOM,一些nodejs没有的属性啊之类。关于 Proxy 对象用来补环境是很方便的,例如监听了window对象,那么运行一些混淆的代码,就能判断该方法做了什么改变。当混淆的js想要获取window的某个属性,就可以通过拦截然后输出到控制台,然后我们可以补下来。 const proxy = new Proxy(obj, { get(target, prop) { console.log("方法:Get ||","对象", name, '属性', prop, '值:', target[prop]); return target[prop]; }, set(target, prop, value) { console.log("方法:Set ||","对象", name, '属性', prop, '修改值:',
这是原始请求包:这是处理的json,可以看到默认python处理的会添加空格,我们要保持和原始请求包一样。毕竟有的时候反爬虫可能会检测这些。
本次測試網址。如圖所示,本次分析K參數,先去啓動器找到發送的地方下斷點。發現k值已經生成,那麽就往前調,從堆棧那裏。定位到異步方法,跟進去這個m,進攔截器裏面找request下斷點。發現此時沒有k值生成,因爲t方法還沒有執行。控制臺輸入HOOK代碼,把 e.data hook住。Object.defineProperty(e, 'data', { set(){ debugger } })然後發現hook成功,繼續往上跟於是便找到了k的生成邏輯。跟y.a函數,進入内部把整個函數複製本地,然後運行,修修補補最終發現y.b,然後跟,就會發現是個aes128加密,即對稱加密算法。然後用gpt生成相同邏輯的加密代碼,運行。最終結果對比:aes的參數在login頁面有。const crypto = require('crypto'); /** * AES-128-CBC 解密函数 (对应原 h 函数) * @param {string} e - 要解密的hex字符串 * @param {string} n - 密钥(utf8字符串) * @param {s
地址請求頭的X-sign需要逆向,斷點后找到 r["x-sign"] = s(e, t)e和t參數直接從瀏覽器複製,進入s函數發現返回md5加密值,分析是否為標準md5,上面的if條件為true,所以else語句不用複製到本地。最終測試結果:var crypto = require('crypto'); function md5(password) { var md5 = crypto.createHash('md5'); return md5.update(password).digest('hex'); } function r(e, t) { if (!e.headers || !e.headers["x-platform"]) return t.cid; var n = t.headerEncryptKeys.find(function (t) { return t.name == e.headers["x-platform"] }); return n
跟進去這個u,再跟P發現這個是返回好幾層的函數,例如下面這種找到最外層代碼發現是自執行函數,將其複製到本地運行發現G未定義,把G也複製過去。最終代碼window = global e = window var G = "undefined" !== typeof e ? e : "undefined" !== typeof window ? window : "undefined" !== typeof self ? self : void 0 , Y = function(e) { return e && "undefined" != typeof Symbol && e.constructor === Symbol ? "symbol" : typeof e }; (function() { var e = function(e, t,
測試網址:https://www.megabit.vip/在請求頭中有個Sign參數需要逆向分析,搜索關鍵詞定位。定位到這裏分析,三元表達式,即 true ? 條件成功的分支:條件失敗的分支。這裏最終走的是Object(y.a)((new Date).getTime())const l = (null === (t = e.url) || void 0 === t ? void 0 : t.includes("/pro/u/withdraw/create")) ? C((new Date).getTime()) : Object(y.a)((new Date).getTime())跳轉過去找把這些有用到的複製到本地,這個是webpack形式,那麽就先在n那裏斷點后刷新頁面然後跳進函數把加載器摳出來這個就是加載器,然後本地寫一個自執行函數把加載器放進去,外部生成一個變量用於接收自執行函數内部的加載器函。通過打印輸出分析加載進去的模塊,然後通過瀏覽器扣就好了,用到哪個就將其放到模塊列表即可。 var uu !function (e) { function f(f
当spider发起一个请求时,request会先经过中间件1的process_request进行处理,然后到达中间件2的此方法进行处理,当经过所有的中间件的此方法处理之后,最后到达下载器进行网站请求,然后返回响应内容。process_response就是逆序处理,先到达中间件2的此方法,再到达中间件1,最后响应返回spider中,由开发者处理。
我的理解:首先Spider把請求對象發送到引擎,引擎又發送給調度器,調度器中的過濾器負責(URL去重)然後放入請求隊列。然後調度器返回給引擎,引擎發送到下載器,下載器從互聯網請求資源,后返回給引擎。引擎返回給Spider返回内容,Spider解析數據后再次提交給引擎,引擎把解析數據交給管道用於持久化存儲數據。
import execjs def runJS(filePath, funcName, *args): with open(filePath, 'r', encoding='utf-8') as f: jscode = f.read() ctx = execjs.compile(jscode) res = ctx.call(funcName, *args) return res return_value = runJS('test.js', '函數名', "函數參數1")