推荐文章
最新发布
-
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
-
使用docker部署前后端分离项目 修改系统源 # apt源 sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list # pip源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simplenginx配置 worker_processes 1; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; server_tokens off; client_max_body_size 20m; client_body_buffer_size 20m; keepalive_timeout 65; sendfile on; tcp_nodelay on; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:2m; gzip on; gzip_static on; gzip_types text/plain application/json application/javascript application/x-javascript text/css application/xml text/javascript; gzip_proxied any; gzip_vary on; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.0; server { listen 80; # 服务器名称 server_name localhost; location / { index index.html index.htm; root /usr/share/nginx/html; try_files $uri $uri/ /index.html; } location /admin { index index.html index.htm; alias /var/www/html/admin/; try_files $uri $uri/ /index.html; } location /api { proxy_pass http://localhost:8000/api; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # 定义 404 页面 error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } # 定义 50x 页面 error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } }Dockerfile # 构建前端页面的阶段 FROM node:16.14-alpine as frontend-build WORKDIR /app COPY frontend/package*.json ./ RUN npm config set registry https://registry.npmmirror.com && npm install -g pnpm && pnpm install COPY frontend/ ./ RUN pnpm build:production FROM registry.cn-chengdu.aliyuncs.com/moxiaoying/python-nginx:latest WORKDIR /app COPY backend/requirements.txt /app/requirements.txt RUN pip install -r /app/requirements.txt COPY backend/ /app/ COPY --from=frontend-build /app/dist /usr/share/nginx/html # 暴露端口 EXPOSE 80 # 启动 Nginx 和后端服务 CMD ["sh", "-c", "nginx -g 'daemon off;' & uvicorn run:app --host 0.0.0.0 --port 8000"]