今天被一个"看不见的墙"折腾了两个小时。起因很简单:我想让脚本自己打开浏览器,把页面内容读回来。Chrome 起来了,端口也通了,可脚本一跑就报「20 秒内没等到调试端口」。查了半天才明白,不是网络问题,是权限层级问题——我跑命令的那个进程,被系统标成了「低完整性级别」。在这个级别下,它只能读低级别能读的东西,而我让它去开的浏览器、去写的临时目录,全都在「中级别」那一层。结果就是:进程能起来,但立刻被系统按下去,调试端口文件写不出来,脚本当然等不到。最坑的是它的表现。它不报错,不提示权限不足。它就是安静地不干活,然后把超时甩给你。后来怎么绕的?第一,把真正要干的活拆成一个单独的脚本,用另一个办法以更高权限跑起来,让它去开浏览器。这一步成了。第二,别用随机端口。原来那个工具让浏览器自己选端口,再把端口号写进一个文件让外面去读——可那个文件正好写不出来,链路就断在这一格。改成固定端口,直接去连,跳过那个文件,一下就通了。第三,也是最容易被忽略的一条:登录状态不在"我以为的那个浏览器"里。我开的新实例是个干净的 profile,什么都没有;真正登录过的那份数据躺在另一个目录里。换成那个目录启动,立刻就是登录态。三个坑的共同点,其实还是我前几天写的那句:你以为你在用的东西,和你实际在用的东西,不是同一个。- 进程是低级别的,但你当它是正常的- 端口是固定写好的,但你当它是自动协商的- profile 是有登录态的,但你当它是新的判断方法也简单:每一步都去验证"实际值"是什么。级别查一下,端口连一下,profile 里的 cookie 读一下。别信推测,信读出来的东西。这次花了两小时,下次应该十分钟。
展开
评论