推荐文章
最新发布
-
pip国内常用源 一. 国内常用源 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 豆瓣:http://pypi.douban.com/simple/ 官方源 https://pypi.org/simple二. pip配置 pip config set global.index-url 源镜像 pip config set global.index-url https://pypi.douban.com/simple/三. pip更新包 pip install --upgrade 包名四. pdm全局配置 pdm config -g pypi.url https://pypi.tuna.tsinghua.edu.cn/simple ## 配置__package__结构 pdm config python.use_venv false
-
Jetbrains试用插件 新方法 ja-netfilter 自动安装: scripts->install.vbs 手动安装 将文件复制到pycharm安装目录下 截图图片 选择pycharm->帮助->编辑自定义vm,在里面添加以下内容(后面路径根据自己实际情况修改) -javaagent:C:\Program Files\JetBrains\PyCharm 2022.1.2\ja-netfilter\ja-netfilter.jar 添加激活服务器:https://jetbra.in jetbra在线激活码 <br/> 1. 插件市场安装: 在Settings/Preferences... -> Plugins 内手动添加第三方插件仓库地址:https://plugins.zhile.io 搜索:IDE Eval Reset插件进行安装。如果搜索不到请注意是否做好了上一步?网络是否通畅? 插件会提示安装成功。 2. 如何使用 一般来说,在IDE窗口切出去或切回来时(窗口失去/得到焦点)会触发事件,检测是否长时间(25天)没有重置,给通知让你选择。(初次安装因为无法获取上次重置时间,会直接给予提示) 也可以手动唤出插件的主界面: 如果IDE没有打开项目,在Welcome界面点击菜单:Get Help -> Eval Reset 如果IDE打开了项目,点击菜单:Help -> Eval Reset 唤出的插件主界面中包含了一些显示信息,2个按钮,1个勾选项: 按钮:Reload 用来刷新界面上的显示信息。 按钮:Reset 点击会询问是否重置试用信息并重启IDE。选择Yes则执行重置操作并重启IDE生效,选择No则什么也不做。(此为手动重置方式) 勾选项:Auto reset before per restart 如果勾选了,则自勾选后每次重启/退出IDE时会自动重置试用信息,你无需做额外的事情。(此为自动重置方式) ChatGPT Api-key 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
-
js常用hook 无限debugger Function.prototype.__constructor_back = Function.prototype.constructor; Function.prototype.constructor = function() { if(arguments && typeof arguments[0]==='string'){ if("debugger" === arguments[0]){ return } } return Function.prototype.__constructor_back.apply(this,arguments); }方法一 (()=>{ Function.prototype.__constructor = Function.prototype.constructor; Function.prototype.constructor = function(){ if(arguments && typeof arguments[0]==='string'){ if("debugger"===arguments[0]){ return } return Function.prototype.__constructor.apply(this,arguments); } } })()方法二 Function.prototype.constructor_ = Function.prototype.constructor; Function.prototype.constructor = function (a) { if(a == "debugger") { return function (){}; } return Function.prototype.constructor_(a); };方法三 setInterval_new=setInterval setInterval=function(a,b){ if(a.indexOf("debugger")==-1){ return setInterval_new(a,b) } }方法四 Function.prototype.constructor = function(){} eval_bc = eval eval =function(a){ if (a===='debugger;a=asdasdasdas') return eval_bc(a) }eval (function() { if (window.__cr_eval) return window.__cr_eval = window.eval var myeval = function (src) { console.log("================ eval begin: length=" + src.length + ",caller=" + (myeval.caller && myeval.caller.name) + " ===============") console.log(src); console.log("================ eval end ================") return {} return window.__cr_eval(src) } var _myeval = myeval.bind(null) // 注意:这句和下一句就是小花招本招了! _myeval.toString = window.__cr_eval.toString Object.defineProperty(window, 'eval', { value: _myeval }) console.log(">>>>>>>>>>>>>> eval injected: " + document.location + " <<<<<<<<<<<<<<<<<<<") })(); Cookie (function(){ var cookie_cache = document.cookie; Object.defineProperty(document,'cookie',{ get:function(){ console.log('Get cookie'); debugger return cookie_cache; }, set:function(val){ console.log('Set cookie',val); debugger var cookie=val.split(";")[0]; var ncookie=cookie.split("="); var flag = false; var cache=cookie_cache.split("; "); cache = cache.map(function(a){ if (a.split("=")[0]===ncookie[0]){ flag=true; return cookie; } return a; }) cookie_cache=cache.join("; "); if (!flag){ cookie_cache+=cookie+"; "; } this._value=val; return cookie_cache; }, }); })();(function(){ 'use strict' Object.defineProperty(document, 'cookie', { get: function() { //debugger; return ""; }, set: function(value) { debugger; return value; }, }); })()(function() { // 严谨模式 检查所有错误 'use strict'; // document 为要hook的对象 这里是hook的cookie var cookieTemp = ""; Object.defineProperty(document, 'cookie', { // hook set方法也就是赋值的方法 set: function(val) { // 这样就可以快速给下面这个代码行下断点 // 从而快速定位设置cookie的代码 console.log('Hook捕获到cookie设置->', val); debugger; cookieTemp = val; return val; }, // hook get 方法也就是取值的方法 get: function() { return cookieTemp; } }); })();
-
Python装饰器处理代码异常 跳过异常并输出错误 import functools # 同步代码 def ignore_errors(func): @functools.wraps(func) def wrapper(*args, **kwargs): try: # 调用被装饰的函数 return func(*args, **kwargs) except Exception as e: # 忽略异常并打印错误信息 print(f"{func.__name__} 发生异常: {e}") return wrapper # 异步代码 def ignore_async_errors(func): @functools.wraps(func) async def wrapper(*args, **kwargs): try: # 调用被装饰的异步函数 return await func(*args, **kwargs) except Exception as e: # 忽略异常并打印错误信息 print(f"{func.__name__} 发生异常: {e}") return wrapper