安娜提戈涅

Linux

前述

最近在用一个非常优秀的工具ETCP(电子书翻译器)读齐泽克的书,尽管有些小问题,但是项目作者维护得非常用心,特此致敬。

关于工具的优点可以直接去看作者网站上的文章我就不赘述了,我也还在协同处理一些issue

最近这段时间,deepl的白嫖引擎突然用不了了,感觉应该是官方在做封锁限制吧,修起来应该也不容易。 原本打算开通开发者账号看看效果,结果半本书不到当月额度就爆表了。感觉除非完全不差钱,不然付费订阅体验还不如白嫖。

接下来就开始了一段摸索,首先是这个关于HTTP Error 429: Too Many Requests的贴子里提到的问题,显然就是最常见的限制访问。作者提供的调节重试次数 (Attempt times) 并没有太奏效,因为一旦到达5次以上就会是1-7小时的等待间隔,让翻译效率大幅降低。 后来经过测试,我认为在tor环境下,以10,20,30,60,120,360,720这样的步进方式会稍微好一点。顺便值得一提的是,贴子末尾提到的隐私保护和指纹泄露的话题刚好和我的摸索结果吻合可以一石二鸟。

同样在关于429访问限制的另一篇贴子里,我也遇到了类似的规律,裸ip直连基本上都会在同一个进度上被限制卡住,无论时间间隔是多少。

好在作者给出了和DeepLX项目对接的自定义引擎配置,省去了我很多尝试的时间。然而,这个项目并不是为翻译书籍这种文本量的工作而开发的,这个贴子表明开发者似乎并不打算直接为api项目加入代理服务器的选项。

最先尝试的是给deeplx单独上tor,很可惜的是proxychainstorsocks都不兼容Deeplx的流量模式,不然事情会简单很多。

还尝试了在防火墙里屏蔽www2.deepl.com域名,以阻拦Deeplx与其通信,但似乎不产生任何影响。

下面就是我目前摸索出的DeepLX+全局Tor (system-wide Torify) 的临时解决方案 (workaround) ,即爬虫工具最基础的戴套白嫖法 (反反爬) 。

Tor+自动换ip

Linux

主流发行版的源里都自带tor的包,直接装:

sudo apt install tor

#安装后可以启动tor服务以测试是否正常,测试后需要停掉
sudo systemctl start tor
sudo systemctl stop tor

到此tor的安装就搞定了,先不要着急启动。

现在tor只能指定代理,而deeplx又不支持代理功能 (最好用的重定向工具proxychains还不兼容) 。这就要用其他工具jailbox以达到全局代理,有用deb发行版的也可以考虑kali-anonsurf ,配置方法相同,路径是/etc/tor/torrc.anon

要用git安装,没装过的先sudo apt install git

git clone https://github.com/jamazi/jailbox.git
cd jailbox
sudo ./setup

然后修改配置文件,参考自这里以及这里,在torrc里加入这几行:

sudo nano /etc/jailbox/torrc

MaxCircuitDirtiness 10
CircuitBuildTimeout 10
LearnCircuitBuildTimeout 0
NewCircuitPeriod 10

上面的数值还有微调空间,目前设置的是每10秒换一个ip,没注释请自行参考文档

需要给放行白名单或修改dns等参数可以sudo nano /etc/jailbox/config,通常环境用不到。

现在就可以用下列命令启动或停止全局tor了:

sudo jailbox-start
sudo jailbox-stop

旧Mac (Intel)

相比linux下的jailbox和anonsurf,旧版Mac下的proximac可以很方便的给deeplx单独上tor,不过很久没更新了所以不兼容新版Mac (M1) 。 先安装breweasy-tor

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> $HOME/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

brew install tor
#easy tor cli tools这里用不到就不写了,但推荐自行安装
#如果连接有问题,用以下命令临时连接Clash代理服务器
#export http_proxy=http://127.0.0.1:7890 https_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890

安装好后编辑配置文件sudo nano /opt/homebrew/etc/tor/torrc

MaxCircuitDirtiness 10
CircuitBuildTimeout 10
LearnCircuitBuildTimeout 0
NewCircuitPeriod 10

#按需让tor走clash代理或自行设置UseBridges
#Socks5Proxy 127.0.0.1:7890

到这里tor就搞定了,接下来安装Proximac

sudo nvram boot-args="debug=0x146 kext-dev-mode=1"

brew install libuv

curl -fsSL https://raw.githubusercontent.com/proximac-org/proximac-install/master/install.py | sudo python

然后创建一个配置文件nano proximac.cfg

{
    "process_name":
    ["curl", "deeplx", "calibre"],
    "local_port":9050,
    "local_address":"127.0.0.1",
    "proximac_port":8558
}

按需修改进程名称,我的浏览器流量无法被重定向但curl和deeplx都可以,这就够了

    "local_port":7890,
    "local_address":"127.0.0.1",
    "proximac_port":8558,
    "VPN_mode":1,
    "proxyapp_name":"clash"

现在可以依次启动两个程序了

brew services start tor

proximac start -c proximac.cfg

运行curl ifconfig.io测试ip自动更换

全平台方案 (Leaf)

Leaf是目前还在活跃更新的开源全平台方案,还可以给mac开tun全局模式linux下编译或mac下使用brew install leaf-proxy安装。 配置文件定制详见这里,目前还不支持按进程名控制流量因此只做了全局Tor的配置。 创建nano leaf.conf

[General]
loglevel = info
dns-server = 1.1.1.1
routing-domain-resolve = true
tun = auto

[Proxy]
Direct = direct
Tor = socks, 127.0.0.1, 9050

[Rule]
FINAL, Tor

运行leaf-proxy -c leaf.conf./leaf -c leaf.conf

全平台方案 (Mellow)

Mellow的好处是可以像proxychains那样设置多重代理和指定流量重定向规则,对于网络环境复杂特殊的情况十分灵活友好,而且在新Mac (M1) 上也能运行。缺点是已经停止维护了,但和闭源收费软件proxifier相比还是更值得进行测试的。 下载Mellow, 运行后会出现托盘图标,右键create configcreate conf template→选中新创建的配置名→edit selected→贴入下面任一内容:

选项1:全局tor

[Endpoint]
Tor, builtin, socks, address=127.0.0.1, port=9050
Direct, builtin, freedom, domainStrategy=UseIP
Dns-Out, builtin, dns

[RoutingRule]
PORT, 1188, Direct
FINAL, Tor

[Dns]
hijack = Dns-Out

[DnsServer]
localhost
1.1.1.1

选项2:deeplx走Tor,其余直连

[Endpoint]
Tor, builtin, socks, address=127.0.0.1, port=9050
Direct, builtin, freedom, domainStrategy=UseIP
Dns-Out, builtin, dns

[RoutingRule]
PROCESS-NAME, deeplx, Tor
DOMAIN, www2.deepl.com, Tor
DOMAIN, wtfismyip.com, Tor
GEOIP, cn, Direct
GEOIP, private, Direct
DOMAIN-KEYWORD, geosite:cn, Direct
FINAL, Clash

[Dns]
hijack = Dns-Out

[DnsServer]
localhost
1.1.1.1

选项3:deeplx走Tor,国内直连,其余Clash,定制参考

[Endpoint]
Clash, builtin, socks, address=127.0.0.1, port=7891
Tor, builtin, socks, address=127.0.0.1, port=9050
Direct, builtin, freedom, domainStrategy=UseIP
Dns-Out, builtin, dns

[RoutingRule]
PROCESS-NAME, clash, Direct
PROCESS-NAME, deeplx, Tor
IP-CIDR, 192.168.1.0/32, Direct
DOMAIN, wtfismyip.com, Tor
DOMAIN, www2.deepl.com, Tor
GEOIP, cn, Direct
GEOIP, private, Direct
DOMAIN-KEYWORD, geosite:cn, Direct
FINAL, Clash

[Dns]
hijack = Dns-Out

[DnsServer]
localhost
1.1.1.1

然后先运行tor再用Mellow的connect,顺序乱了会冲突。 不过这里需要用到tor自己的配置文件,所以要做同样的修改sudo nano /usr/local/etc/tor/torrc

MaxCircuitDirtiness 10
CircuitBuildTimeout 10
LearnCircuitBuildTimeout 0
NewCircuitPeriod 10

#按需让tor走clash代理或自行设置UseBridges
#Socks5Proxy 127.0.0.1:7890

分别用网页wtfismyip.comifconfig.io进行测试,或用curl ifconfig.iocurl --socks5 127.0.0.1:9050 ifconfig.io

DeepLX+自定义引擎

安装DeepLX

Mac

brew tap owo-network/brew
brew install deeplx
brew services start owo-network/brew/deeplx

Linux

sudo mv deeplx_linux_amd64 /usr/local/bin/deeplx
sudo chmod +x /usr/local/bin/deeplx

装好后两个系统都同样可以直接terminal里运行deeplx启动

配置自定义引擎

调试引擎参数时,试过在headers里塞各种奇怪的东西,但都无法影响被限制访问的情况。也就是说,官方接口那边就是直接处理ip地址的。所以,还是最小化配置方案最好。

电子书翻译器→引擎→自定义→添加中粘贴一下内容并保存:

{
    "name": "DeepL X",
    "languages": {
        "source": {
            "English": "EN"
        },
        "target": {
            "中文": "ZH"
        }
    },
    "request": {
        "url": "http://127.0.0.1:1188/translate",
        "method": "POST",
        "headers": {
            "Content-Type": "application/json"
        },
        "data": {
            "source_lang": "<source>",
            "target_lang": "ZH",
            "text": "<text>"
        }
    },
    "response": "response['data']"
}

目前摸索出的比较稳妥的参数是这样的:

并发限制:1 时间间隔:5.0 重试次数:6 超时:5.0

因为洋葱网络的特点,间隔/超时太高或太低都会有副作用。 参考硬编码的间隔次数自行调整: 1 x 5 = 5 秒 2 x 5 = 10 秒 3 x 10 = 30 秒 4 x 30 = 120 秒 5 x 120 = 10 分钟 6 x 600 = 1小时 7 x 3600 = 7小时

PS1:我发现每次调整过自定义引擎后,必须完全关闭电子书翻译器插件设置窗口,再次打开后进行测试才能有效调用新修改的数据。

PS2:在中断发生时可能会漏翻一个段落,应该在翻译完成后人工核查并启用缓存以方便返工。

自动重启脚本

这个实验性脚本的意图是为了重置deeplx与deepl服务器之间的tcp连接和会话,目前设置为每30秒重启一次deeplx。429通常会规律性的连续触发4次左右,而在连续429之间如果重启deeplx进程会很大概率避免后续的429。因此,该脚本会大大缩短因连续429所浪费的时间,经测试,200个段落3万个单词的文本翻译时间大约在15分钟左右。 nano deeplx.sh

#!/bin/bash
for (( ; ; ))
do
deeplx &
echo deeplx started
curl "http://localhost:1188"
sleep 30
killall deeplx
echo deeplx killed
done

运行./deeplx.sh

开工

如果一切顺利,现在就能开工了,分窗口在terminal运行:

#Mac环境
brew services start tor
proximac start -c proximac.cfg
brew services start deeplx

#linux环境
sudo jailbox-start
deeplx

如果不是服务器或不需要常驻,可以用下列命令停止所有程序:

#Mac环境
brew services stop deeplx
proximac stop
brew services stop tor

#linux环境
sudo jailbox-stop
sudo systemctl stop tor

前台运行脚本

如果不喜欢让Tor和deeplx常驻后台的话,可以用这个脚本: nano tordeeplx.command(或.sh)

tor & deeplx

保存后赋予运行权限sudo chmod +x tordeeplx.command

测试429率

目前的配置下,429率大概在20%左右,运气会产生一定影响。 以这种频率更换exit node和发送翻译请求的话,ip地址用不到被封就会被切换并且不会被同一台客户端复用。因此,理论上能够长期保持整个洋葱网络对于deepl的洁净度,是可以长期相对稳定使用的。

$ deeplx
DeepL X has been successfully launched! Listening on 0.0.0.0:1188
Made by sjlleo and missuo.
[GIN] 2023/07/06 - 20:20:43 | 200 |   1.83981902s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:21:28 | 200 |  655.394982ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:21:43 | 200 |  620.316798ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:21:59 | 200 |  821.454301ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:22:15 | 200 |  1.309522506s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:22:31 | 200 |  1.013822256s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:22:47 | 200 |  862.486326ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:23:03 | 200 |   1.08809995s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:23:20 | 200 |  1.457108487s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:23:36 | 200 |  986.279915ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:23:52 | 200 |  883.792633ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:24:08 | 200 |  1.415006115s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:24:24 | 200 |   883.21823ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:24:41 | 200 |  1.911790717s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:24:57 | 200 |  1.056279387s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:25:18 | 200 |  5.478524016s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:25:34 | 200 |  1.003227537s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:25:50 | 200 |  941.563757ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:26:06 | 200 |  936.977163ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:26:21 | 429 |  573.914753ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:26:27 | 429 |  682.560622ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:26:38 | 429 |  634.381146ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:27:08 | 429 |  589.852792ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:29:10 | 429 |  1.937044063s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:33:10 | 200 |    1.3341382s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:33:39 | 200 |  717.496959ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:33:49 | 200 |  394.595441ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:34:00 | 200 |  705.609073ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:34:11 | 200 |   1.43666196s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:34:22 | 200 |  770.348791ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:34:33 | 200 |  698.786404ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:34:44 | 200 |  878.148456ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:34:55 | 200 |   1.57579993s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:35:06 | 200 |  624.894126ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:35:17 | 200 |  1.208342938s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:35:28 | 200 |  905.414785ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:35:40 | 200 |  1.274016686s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:35:50 | 200 |  882.601307ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:36:01 | 200 |   967.57988ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:36:13 | 200 |  1.656233787s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:36:25 | 200 |  2.119461124s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:36:36 | 200 |  449.239601ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:36:46 | 429 |   253.34428ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:36:51 | 429 |  284.683034ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:37:02 | 429 |  278.761024ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:37:32 | 429 |  380.629489ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:39:35 | 200 |  2.890293995s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:39:46 | 200 |  1.007476936s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:39:58 | 200 |  1.659029437s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:40:09 | 200 |  1.288784059s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:40:21 | 200 |  1.886470626s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:40:32 | 200 |  543.496021ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:40:42 | 200 |  662.304495ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:40:53 | 200 |  593.130639ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:41:03 | 200 |  548.919543ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:41:14 | 200 |  808.393736ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:41:25 | 200 |  560.225622ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:41:36 | 200 |  603.778588ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:41:46 | 200 |  643.346112ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:41:57 | 200 |   544.89588ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:42:07 | 200 |  548.723954ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:42:18 | 200 |  545.862852ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:42:28 | 200 |  542.302542ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:42:39 | 200 |   555.76809ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:42:50 | 200 |  757.230947ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:43:01 | 200 |  923.270359ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:43:12 | 200 |  792.424487ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:43:23 | 200 |  1.468216953s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:43:35 | 200 |  1.940953761s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:43:46 | 200 |  918.658997ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:43:58 | 200 |  1.762370618s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:44:09 | 200 |  669.954463ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:44:19 | 200 |  740.310366ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:44:30 | 200 |  1.038631914s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:44:41 | 200 |  547.480661ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:44:52 | 200 |  545.392986ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:45:02 | 200 |  544.998703ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:45:13 | 200 |  1.032989732s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:45:24 | 200 |   719.28602ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:45:35 | 200 |  597.075314ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:45:45 | 200 |  904.921926ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:45:56 | 200 |   657.57461ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:46:07 | 200 |  746.795608ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:46:19 | 200 |  2.054962619s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:46:29 | 429 |  433.606618ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:46:35 | 429 |  545.346439ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:46:46 | 429 |  919.869038ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:47:17 | 429 |  519.130298ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:49:19 | 429 |  1.915815483s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:59:22 | 200 |   3.16591978s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:59:32 | 429 |  328.199181ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:59:38 | 200 |  775.436049ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 20:59:49 | 200 |  878.428524ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:00:00 | 200 |  754.443644ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:00:11 | 200 |  1.016588589s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:00:21 | 200 |  624.515913ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:00:32 | 200 |  400.167834ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:00:42 | 200 |  336.449963ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:00:53 | 200 |  504.342266ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:01:03 | 200 |  736.649074ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:01:14 | 200 |  475.508762ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:01:24 | 200 |  398.919812ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:01:35 | 200 |  701.584537ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:01:46 | 200 |  1.068159057s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:01:57 | 429 |   387.46933ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:02:02 | 429 |  496.159534ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:02:13 | 429 |  654.305298ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:02:43 | 429 |  428.376921ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:04:45 | 200 |  1.778534722s |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:04:56 | 200 |  940.728793ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:05:07 | 200 |  718.906396ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:05:18 | 200 |  536.110582ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:05:28 | 200 |  536.378607ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:05:39 | 200 |  662.592958ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:05:49 | 200 |  707.224247ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:06:00 | 200 |  732.119709ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:06:11 | 200 |  529.860241ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:06:22 | 200 |   712.92979ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:06:32 | 200 |   641.23342ms |       127.0.0.1 | POST     "/translate"
[GIN] 2023/07/06 - 21:06:43 | 200 |  658.058161ms |       127.0.0.1 | POST     "/translate"

#脚本 #bash #自定义引擎 #proxifier #Mellow #Leaf #Proximac #Clash #brew #torrc #anonsurf #jailbox #Linux #Mac #Torify #Tor #torsocks #proxychains #DeepLX #书伴 #Calibre #deepl #翻译 #洋葱路由 #反反爬 #全局代理

PsychOperating System (PsyOS) 图的名字 PsychOperating System (PsyOS) 也是三个领域名称的缝合。

为了方便自己学习,很早之前就给心理学和精神分析做过一个思维导图。然后前不久还手撸了一个知识考古学的拓扑图,跨学科阅读时很有帮助。我称之为「

知识拓扑学Epistemotopology
」 。 不过由于
嬉皮士时代人类潜能运动 (HPM)
新时代运动 (New Age)
1960年代反文化运动
的知识学实在是太复杂了,第二次梳理到心理学领域时推翻了第一次的很多东西。

这几天在读霍妮和张一兵,脑中又浮现了很多新想法。于是开始了第三次梳理,而且打算整点活。自从了解到了精神分析被主流心理学界驱逐以及拉康被主流精神分析界驱逐的这些幕后故事,除了根据他们的不同派别梳理之外,就总想在对立的派系之间寻找些共性——底层代码 「Kernel Code」。

没错,我始终觉得纷繁复杂的心理学派系之间其实就那么一两套底层代码,一套弗洛伊德的一套冯特的。剩下的各派都是改改程序接口调调环境变量什么的,有些甚至换个桌面环境就算是个新系统了——不论Windows用户和Mac用户之间有着什么样的鄙视链;Ubuntu爱好者和Arch拥趸之间有着多大分歧。我总能在三大势力和三巨头之间、客体关系学派和拉康派之间找到操作系统领域小圈子对垒的既视感。

于是循着这种逻辑——用操作系统谱系作为框架,再次

梳理缝合
精神分析和心理学的谱系。

相信还有很多人对心理学和精神分析之间的关系搞不太明白,说不定利用上技术圈的一些思维框架,就能让如何理清这件事变得一目了然。

这图更新到v0.4版了,尽管漏洞百出还是讲解一下具体思路吧。

经典弗洛伊德/Unix&GNU

弗洛伊德早期受到过很多领域的影响,科学、哲学、神秘学等等,图上为了套用操作系统而强行把弗爷和布伦塔诺学派拆开、只保留沙可+伯恩海姆这一系作为精神分析的本源。 精神分析理论的不断完善和临床心理治疗的开启在我看来堪比同一个人既写出了Unix核心代码又开启了GNU计划。没有GNU对自由开源的追求,也就不可能有后来Linux的百花齐放;而GNU的诞生也绝对离不开原始Unix的土壤,二者既相互成就又难免冲突。 如果没有临床治疗的实践探索,精神分析可能会在科学独断论和生物主义的象牙塔里烂掉,就像某个不知名的商业闭源Unix那样。而在那个医学与科学没有充分结合、医学与神秘学又没有完全分家的时代,把脱胎于动物磁性说的催眠和暗示引向释梦和谈话可谓无比天才。这不仅在人类文明史中开启了一个全新篇章,更免除了他那个时代不知多少人的水疗和电疗——假以治疗之名的刑罚。

亚伯拉罕-客体关系/BSD-OpenBSD

早逝的亚伯拉罕被弗爷称作「

最好的弟子best pupil
」,尽管他的理论体系应该是包含在弗洛伊德之中的,把他和兰克放在了一起主要是因为克莱因。不过分类上克莱因其实本该和拉康一同被放入后弗洛伊德主义里的,没有如此做只是为了套用操作系统框架和凸显拉康的独特。 之前曾看过有人形容克莱因和安娜的内战是两个
父控ファザコン
恋父癖
在挣爹。但是在我看来,她们两个主要还是派系争权,弗爷的家业真挺大的,就算比不上石油钢铁汽车这些行业也还是有很多隐性利益可图的。而且从悼文中可以发现,和克莱因感情最好、羁绊最深、理论影响最主要的是亚伯拉罕,而克莱因在对安娜的学术攻击中也常能感受到英国地头蛇在欺压寄人篱下的奥地利落难老人遗孀的气势。 相比之下温尼科特在政治和学术上都尽显英伦绅士风度,理论和临床方面也对两位女前辈的儿童分析理论做了不少修正与补充,影响了很多分析师和心理学家。作为NetBSD的最主要分支,OpenBSD继承了Unix的设计理念和NetBSD的便携性,易于广泛传播和融入其他开源系统。温尼科特也经常出现在各派临床治疗、儿童心理学和育儿教育理论中。

另外有一点很难在图中体现,拉康早期理论很多是和客体关系/克莱因学派有关的,无论是巧合还是批判性借鉴又或是魔改。这点在BSD系和Linux系之间的架构相似性和软件兼容性上都可类比。同理,拉康派分析师如果去学客体关系理论的话,也有很多地方能对上号。都有镜像/投射认同、内在他者/客体、符号/象征,记得VE在之前的《关于中李老师困惑的精神分析与辩论》那一期播客里曾讽刺过克莱因好坏乳房理论的简陋。但那只是她的早期理论,正如拉康和霍妮的转向,由于吸收了温尼科特提出的过渡性客体理论,克莱因对于客体的指涉也转变成了和阳具能指类似的东西——可以随意在人体器官、他人和欲望幻象之间滑动 (当然和欲望图、三界理论比起来显然还是小巫见大巫) 。在我看来当时整个精神分析学界在语言学和符号学的转向都有着异曲同工之妙,只不过可能由于后来标准化大规模量产培训出来的一些客体关系派分析师学艺不精、往往喜欢生搬硬套导致弄巧成拙罢了。尽管我不认同克莱因对经典弗洛伊德理论的魔改,但在开宗立派的创始人级角色之中,克莱因的水平绝不算差。

兰克-存在-人本主义/BSD-macOS

虽然没有读过他的书,但出于经历上的共情导致我很偏爱兰克。当弗爷口中的那个「小兰克」被逐出精神分析界的那一刻,也标志着弗洛伊德对年轻时的那个崇尚自由开放的自己的彻底背离,而奥托兰克也走上了成为「精神分析之子」的旅途。背叛了老弗爷的他,或许才是青年弗洛伊德最忠实的追随/继承者吧。 如果说有什么能够把组织度最为松散的阿德勒学派及其后续的新弗洛伊德主义、社会文化/人际关系学派、人本主义者们串在一起的话,只有兰克可以贯穿从「自由精神分析协会」的创立直到时下爆款的欧文亚隆心理学,足以称为当代心理学第三势力无冕的缔造者。 乔布斯当年搞Lisa OS和后续经典麦金塔系统时,在产品定位与生态开放性上的困窘境地与胡塞尔和阿德勒都有些许相似之处。到底搞的是哲学还是心理学?要不要全面否定弗洛伊德并与精神分析彻底割席?这种举棋不定左右为难的情况一直持续到罗杰斯和马斯洛这些非精神分析背景的心理学家全面占领临床治疗阵地才算结束。就像PowerPC时代末期的Mac OS 9在面对已经换装了全新NT内核的Win2k和XP那样毫无还手之力,只得放弃并结束旧时代、拥抱Unix和Intel。这也奠定了其后走向iOS移动时代的大前提,也是后来放弃Intel拥抱ARM搞出M1芯片的先兆。 存在-人本这一支精神分析也一样,尽管一时间被同名的心理学取而代之,但后者也逐渐的走向了宗教与灵性——超个人心理学。尽管这一支常被诟病在背离精神分析的歧路上走得最远,吊诡的是,它却又兜兜转转地回到了精神分析的原点——催眠与暗示。同样吊诡的是,IBM的PowerPC在与苹果分手多年以后参照「Linux基金会」搞了个「OpenPOWER基金会」。

安娜-自体心理学/FreeBSD-TrueNAS

由于先入为主的偏见,美国系的精神分析一本都没读过。据说三个极易混淆的

APAAmerican Psychological Association
American Psychoanalytic Association
American Psychiatric Association
在各种规范上都是趋同的,都是接受标准化培训和考试的,这就难免导致治疗手段、疗程乃至治疗目标都是标准化的。这种制度规范与理论体系完全矛盾的情况下精神分析和动力学取向必定打不赢认知行为疗法,被医疗系统当作医死马的垃圾填埋场也就不足为奇了。 不过在学术领域,关系-自体学派的战斗力并不弱,不仅擅长发论文也很会办学讲课。芝加哥和新英格兰的很多大学都有精神分析专业,课程安排都是很中立客观地讲解各派精神分析,但其实是有内隐的主导性夹杂其中。这套玩法有没有感觉很眼熟?普通心理学/这才是心理学 了解一下。 反观皮亚杰和埃里克森的心理学走向才是美国学派的正路,彻底与精神分析划清界限然后拥抱儿童教育,从个人事业发展和社会贡献的角度上讲都是更为成功的。 FreeNAS一系的操作系统所面临的商业环境也同样残酷,面向高端用户的TrueNAS和面向低端用户的XigmaNAS表面上好像配合得很默契似乎能瓜分市场。其实没技术的用户都去买威联通QNAP和群辉Synology了,而有技术的却往往愿意跳过NAS定制化系统,在常规Linux/BSD上自建ZFS和Ceph。就仿佛是分不清精神分析的都去做心理咨询了,了解精神分析的不会来做自我/自体取向一样。结果讽刺的是,真正让人接触最多的BSD系统是跑在Playstation游戏机上的那个……当初我自己在接触精神分析之前自学心理学期间就很喜欢发展心理学,也是学了精神分析以后才知道埃里克森原本是精神分析出身的。

荣格/Red Hat

就我这些年的观察,感觉喜欢荣格的人就会很喜欢,无感甚至讨厌他的人都会敬而远之。但我自己算是在夹在中间的吧,早几年不太接受神棍兮兮的东西所以只读过他的心理学,近来也读了一些晚期神秘学作品。 尽管荣格和

我的相性始终不太对得上我最有共鸣的是个体-人本-存在
,说他难懂没有拉康黑格尔难,说他深奥没有老庄吠陀深奥。最大的感受可能还是繁杂吧,前面也批判过克莱因的复杂化而荣格的在这方面要远超克莱因。我认为荣格算是与弗爷直接共事过的分析师中,才能方面最接近弗爷的了。换句话说,弗爷的后继者中没有一个人比他更有才华,大部分流派都是在经典精神分析的基础上做减法或者拆分融合其他思想。即便拉康也是借了语言学和法国文化界的合力才超越了弗爷的。而荣格是唯一一个拆除原有基础后把形而上学大厦搭得高度和广度都不输弗洛伊德的。但他有所超越么?如果是站在一个喜欢做分类测试的人的角度上看,那想必是超越了吧。 和很多人一样,我从小就接触心理学,无论是出于好奇心还是抱有问题意识去主动去看科普/做测试,又或是被动接受来自环境的规训——我曾在小学期间完整经受过正统“AD/HD治疗”。我也从小就接触Linux,无论是路由器固件还是黑客光盘,又或是搭建各种类型的服务器。来回来去总还是工具性的用途,同样的事但凡能在Windows上做到我大概是不会去用那些Linux的。性格测试人格分类也一样,但凡星座测试、血型甚至是算命能解决我的苦恼,我大概也是不会主动寻求心理学知识的。这就是为什么我会把荣格和红帽绑在一起并且放进了一堆BSD中间——工具性/功能性太强了。 我是借助Slacko Puppy才有幸接触到这个“活化石”Slackware的,它被认为是
现存最古老的发行版the oldest distribution that is still maintained
,被称为「
最像Unix的Linuxthe most “Unix-like” Linux distribution
」。亚伯拉罕这个弗爷「最好的弟子」以及「精神分析之子」兰克都因此和Slackware绑在了一起。直到两个商业公司开发出了变色龙和红帽两个企业级定位的发行版,一切都改变了。 曾经的服务器搭建都是在实体机里的NT或Win Server上完成的,现在全是在虚拟化环境中的RHEL或CentOS上。曾经的工作学习和生活社交中,人们都只是急/慢性子或者是薄/厚脸皮,现在都是xx型人格或者四个字母。 技术在发展,时代在进步,提高效率是好事,Fedora和SUSE的桌面个人系统也很好用。快速鉴别他人性格特点也能免除很多麻烦,但是对他人乃至自我的异化要不要作为这种便利的代价呢?把操作系统和电子设备完全工具化的同时,也意味着断绝了它们作为肢体延伸/自我装置乃至精神器官的可能性。

拉康/Debian

把拉康和Debian绑在一起是因为先定位了齐泽克和Ubuntu,相信很多人最早直接接触到的Linux就是Ubuntu,无论后来有没有变成Linux的长期使用者。一个是「

Linux桌面元年唯一的希望“If there is a hope for the Year of the Linux Desktop”
」,一个是「
最危险的西方哲学家“The Most Dangerous Philosopher in the West”
」,这样一个流行的发行版和时下网红可谓是天造地设的一对。尽管齐泽克在公众面前更多的是谈政治哲学而非精神分析,但他对传媒的利用能力足以让他作为拉康派的顶梁柱出现在这张图上——拍电影、开讲座、上电视访谈、发网络视频、做直播……当然还有其他分析师都在做的写书。 把我在B站最喜欢的四位up主放在齐泽克后面并非因为他们在思想传承或学术体系上有多大关联,只是因为传播形式都是以视频媒介为主的,在这个层面上齐泽克作为先行者走在了所有年轻一代人的前面。巴迪欧和张一兵在思想体系以及视频讲座数量上都比其他同代人更接近齐泽克所以放在了一起。 未明子早期视频质量很接地气,拍摄环境穿衣打扮全不讲究,讲的内容经常跑题不说还喜欢吃着东西讲话。按他的说法——像骂人吐口水和奇妙比喻什么的都是故意安排的特色人设,似乎是在对标齐泽克摸鼻子,这点上给一个Xubuntu的位置应该是刚刚好的。后来在哲学区把阵地站稳大旗扛起的阶段,把Linux Mint的位置给他应该毫不过分,而Mint并非
他自己Xubuntu
而是
张姐Kubuntu
的分支。 由于我不太看直播所以并不了解谁负责引流谁负责转化谁负责变现……但是张正午除了用外貌拉新刺激舰长打钱以外,最吸引我这类受众的应该就是她带读芬克的书了吧。以太假说、酒吧和公益项目等等事情似乎也都有张姐在操持,很有System76搞开源硬件的感觉。所以因为容貌身材特色把Kubuntu、线下实体硬件的盈利模式把Pop!_OS给她。 李爽君是最致力于拉康精神分析的B站up主没有之一。而她给「
漫步学派The Casualistic School of Psychoanalysis
」的定位也是平易近人,在这点上和elementary OS的理念是一致的——要尽可能的让更多的mac和windows用户接受Linux系统。而在我看来她也确实做到了,李爽君的视频让一个技术工人的我,像兰克那样半路出家进入了弗洛伊德门下,开启了我的拉康之路。 荀爽在精神分析和西哲上缝合了中国哲学和玄学,而且并非红旗和麒麟那种混经费的面子货,而是像雨林木风和深度那样真心实意地深耕出了一个符合中国用户使用习惯的Linux。希望他日后能像deepin那样发展壮大,最终不仅造福同胞还能跨越国界。


#精神分析 #心理学 #操作系统 #张正午 #拉康 #齐泽克 #张一兵 #未明子 #漫步学派 #李爽君 #荀爽 #Unix #Linux #Gnu #Windows #谱系学 #知识考古学 #知识拓扑学

参考

弗洛伊德及其后继者:现代精神分析思想史-马格丽特·J.布莱克

曾祥龙北师大心理学部 (UID204831037) :心理学史

Wikipedia: Unix timeline; MacOS Version History; LinuxDistributionTimeline

@chococigar:simple history of OS

感谢catbox.moe的免费匿名图床和Filen.io的云存储