leadscloud

Google SEO|外贸营销推广

ChatGPT国内镜像站,国内使用ChatGPT中文版本

http://chat.tinycms.xyz:3002/

域名更改为

https://freegpt.tech/

如果网站无法打开,使用下面的导航链接

https://site.tinycms.xyz

欢迎体验,当前主流模型包括o1-mini模型都可免费体验,deepseek免费用:

支持

  • 模拟浏览器登录访问原始chatgpt网站,ChatGPT Plus付费版本
  • 支持最新的各种chatgpt模型及市面上的其它热门模型
  • 支持你自己的chatgpt账号中的API key 调用访问
  • 免费访问gpt-4等模型和部分画图模型
阅读全文 »

chatgpt关于这两天孙宇晨和景甜的大瓜,流量爆了。

我查了 8 月 27—28 日的报道,这个瓜目前已经不是单纯娱乐传闻,而是**“感情争议 + 3000 多万元民事财产纠纷 + 双方公开发声”**。最关键的一点是:案子目前尚无法院实体判决,所以孙宇晨长文里的许多私人叙述只能算他单方面的说法,不能当成已经证实的事实。

先用时间线把瓜讲明白

第一阶段:几个月前已有传闻。 此前网上曾出现过涉及景甜和一名富豪的“代孕、巨额钱款”传闻,景甜方面当时明确否认相关网传内容。直到这两天孙宇晨的名字正式浮出水面,这件事才重新爆发。

8 月 27 日:诉讼被公开。 孙宇晨一方的代理律师公开确认,孙宇晨已经因财产争议起诉景甜及其父母,涉案金额为 3000 多万元人民币。媒体援引律师说法称,孙宇晨一方将这笔钱主张为恋爱、婚姻过程中支付的“彩礼”;目前案件仍处在司法程序中,并没有法院判决认定这笔钱究竟是什么性质。

景甜工作室当天回应得很强硬,把对方的做法称作以艺人声誉为要挟的“碰瓷”,并表示一切交给法院处理。

然后孙宇晨发了一篇《我的女友景甜》。 这才真正把事情炸上热搜。他在长文中声称,两人曾经交往、发展到谈婚论嫁,并对金钱往来和两人的分歧作了大量私人叙述,其中也涉及此前网上传播的代孕相关争议。

但是这里有一个非常重要的矛盾点:文章末尾又注明“本文纯属虚构”。所以仅凭这篇文章,不能证明里面的具体事情真的发生过。

8 月 28 日早晨:景甜本人第一次正面发声。 她写道,自己“过去、现在、未来”都不会为了钱出卖爱情或灵魂,还自嘲自己“眼光不行”“智慧欠奉”,最后表示相信法律和公平,“时间会证明一切”。

随后孙宇晨接受采访,又给长文加了一层解释。 他称文章花了十几个小时写成;关于为什么注明“虚构”,他说自己不能保证所有内容百分百准确,但认为大部分是符合自己意愿的真实陈述。他还表示目前已经没有和景甜沟通,诉讼事务交给律师处理。

所以出现了一个很微妙的局面:孙宇晨一边给文章加了“虚构”免责声明,一边又在采访中表示其核心表达是真实的;景甜则没有逐条回应他的私人叙述,而是全面否认“为了钱出卖爱情”的说法,并选择走法律程序。

那现在到底哪些能算“实锤”?

目前比较能够确认的核心,其实只有几件事:双方确实存在一宗 3000 多万元级别的财产诉讼;孙宇晨一方公开主张这笔钱与双方恋爱、婚姻安排有关;孙宇晨确实公开发布了关于两人关系的长文;景甜及工作室确实公开反击并表示交由法院解决。

至于网上最吸睛的那些内容——两人究竟恋爱到了什么程度、每笔钱到底为什么支付、此前“代孕”传闻具体是真是假、双方谁提出了什么条件——目前都没有司法结论,不适合直接写成事实。尤其孙宇晨自己都承认文章无法保证每一点百分百准确。

这也是为什么现在看各种微博“侦探帖”容易越吃瓜越乱:网友可以通过酒店、旅行时间之类的信息证明某些外围细节“似乎对得上”,但这和证明一项金钱或感情指控成立是两回事。

两个人分别是谁?

孙宇晨(Justin Sun),简单理解就是国内互联网时代最出名的一批加密货币创业者之一,最核心的身份是区块链项目 TRON(波场)创始人。他长期非常擅长制造公共话题,2019 年曾以约 456.8 万美元拍下与巴菲特共进慈善午餐的机会,因此即使不关注币圈,不少人也听说过他。最近这次采访中,他自己也被问到公开感情经历是不是又一次“孙宇晨式营销”,他回应称这次更多是表达个人感受。

所以他的公众形象一直比较特殊:一边是身家和加密行业经历极其吸睛的创业者,一边又长期有非常强的互联网营销和话题属性。这也是为什么他这次亲自写万字感情长文,会立刻产生巨大传播效果。

景甜则是演员,北京电影学院出身。她早期因为《战国》《警察故事2013》《澳门风云》等电影获得关注,后来出演张艺谋的《长城》,还参演过好莱坞电影**《金刚:骷髅岛》和《环太平洋:雷霆再起》;电视剧方面比较有代表性的包括《大唐荣耀》和 2021 年的《司藤》**,后者让她又经历了一轮很明显的人气回升。

一句话概括这个瓜

它并不是简单的“孙宇晨突然爆料自己和景甜谈过恋爱”。

真正的主线更接近:

一段双方目前没有共同公开确认版本的私人关系 → 出现数千万元资金争议 → 孙宇晨起诉 → 景甜方面称遭“碰瓷” → 孙宇晨公开万字文章曝光自己的版本 → 景甜正面反击 → 最终关键事实等待法院认定。

因此这瓜现在最值得看的其实不是网友继续扒私人细节,而是法院最后怎么认定那 3000 多万元的法律性质。一旦实体审理和判决出来,很多目前各说各话的内容才可能真正分出“事实、主张和传闻”。

这件事今天还在快速发展,我也可以继续盯一下,看法院信息、律师的新回应或者双方有没有再发声明。


事件总结:

孙宇晨用了3000万睡了景甜,后者索要更多时,孙及时止损。

时间线
2007年:孙进入北大,通过QQ广告认识景甜;在校内网申请她为好友,只写“你好”,未获通过。此后一直保存她的QQ宣传图。

2011年:孙买150元羽绒服都要犹豫三天;同年景甜主演投资约1.5亿元的《战国》,被暗指有资本为她配置顶级资源。

此后多年:孙赴美读书、创业,财富从十亿增长到百亿。每次更换设备,都会转存景甜的旧照片。

第一次见面:两人在瑰丽酒店见面。孙带景甜看自己花620万美元买下的卡特兰香蕉。

第一次看电影:景甜要求放映厅不能有其他人。孙包下《疯狂动物城2》全场,并给26名已购票观众现金,让他们离开。

首次亲密行为:孙揉景甜胸部,被她推开;原因是孙的指甲扎疼她。景甜花近一小时替他磨完十根手指,随后表示“想摸哪都行”。

交往约三个月:孙派人调查景甜及其家人、公司、房产、账户和男女关系,形成四十多页资料。孙表面相信她说的一切,实际上“一个字也不信”。

特纳里费旅行:景甜临时提出出游,孙次日调来A330,约30人同行。景甜睡觉不能见光,11名助理每天用黑胶带封窗并遮住所有指示灯。

飞机上:景甜要求孙以后叫她“妈妈”,孙接受。

旅行期间:景甜提到一名曾替她“扛事入狱”的财务人员。对方出狱后向她要钱,她考虑三天,最后给了8万元。

前往马尔代夫途中:景甜提出和孙要一个孩子,而且必须代孕。

抵达马尔代夫:景甜的一只行李箱被要求单独使用一架小飞机运输;酒店另配管家、保镖、助理和无人机手等约26人。

交换前任经历:景甜禁止孙提到某位运动员,文中暗指张继科,并称她背上的纹身与该运动员有关。

第一次彩礼转账:景甜以父母将她养大不容易为由,让孙向景国庆、田心爱两个账户转账,共计人民币3000万元。孙照办。

关系测试:景甜承认,自己不断提出要求,是想看孙会不会有一次拒绝。孙说不会,她回答:“那就没意思了。”
娱乐圈暗示:景甜谈到“剧组夫妻”,称演员可能进组期间晚上做爱、白天争番位,杀青后再当作一切没有发生。

2026年1月2日:孙在马尔代夫向景甜求婚。戒指临时从香港运来,景甜嫌钻戒太小,但表示以后补一个大的即可。

第一次要求去北京:景甜问孙能否来北京,孙沉默,没有答应。

马尔代夫清晨:景甜独自在露台“算日子”,可能与月经周期及取卵时间有关。

回到香港:景甜见了孙的父母。当晚又以筹备两家见面和婚事为由,要求孙继续向她父母的账户转钱。孙用5张银行卡轮流转账。

春节:景甜留在海南,没有与孙及其父母过年。她再次问孙能否来北京,孙仍然沉默。

香港房产:景甜要求孙在香港购买一套登记在她名下的房子。

取卵前检查:景甜在北京接受抽血、激素六项、B超和AMH等检查。相关费用早已出现在孙助理的付款单里,但孙此前没有留意。

2月25日:景甜抵达香港,表示除非先看到香港房子,否则不去洛杉矶。孙把过去半年筛选的十几套房发给她,她全部不满意。

2月28日:景甜乘孙的湾流G700前往洛杉矶,入住蒙太奇拉古纳海滩。孙包下酒店整层30天,费用约100万美元。

代孕安排:加州代孕机构和一名34岁、育有两个孩子的代孕母亲早在1月确定。孙已支付20万美元定金,诊所也准备了8天促排针。

入住第8天:景甜在电话中要求孙先支付5000万美元,否则不取卵。

孙第一次拒绝:孙说“让我想想”,随后用Claude Code核算全部现金资产,确认5000万美元不会对自己造成实质影响。但Claude明确建议不要给。

第二次电话:景甜再次询问孙是否想好。双方沉默11秒,孙没有答应。景甜说“行,我知道了”,随后挂断电话。

关系结束:景甜住了8天便离开,此后再无人见到她。湾流G700空停在机场,机组仍每天照常报到。

后续损失:酒店剩余22天空置;20万美元代孕定金不退;8天促排针一支未拆;包机燃油费用甚至高于整层酒店费用。

分开以后:孙删除了“预产期前三个月准备房间”的日程提醒,再次翻看那份四十多页的景甜调查报告。

最终疑问:孙一直在想,如果当时支付了5000万美元,景甜是否会留下。

传闻后续:有爆料称孙准备在国内提起诉讼,追讨已转出的3000万元及其他损失;截至目前,尚无公开司法记录证明案件已经立案。

编外消息:景甜多次访问孙前女友的微博成为了该事件的佐证。

以下是原文


H.E. Justin Sun 👨‍🚀 🌞

@justinsuntron
我的女友景甜
一颗卵子的重量,三点五微克。
五千万美元现金的重量,两点五吨。
景甜在蒙太奇拉古纳海滩的电话里向我要的是后者,抵押的是前者。
她去那里是为了取卵。代孕的孩子预计2027年出生,快一点的话还能属马。这是她主动提的。到了诊所,她说没有五千万,不取。
蒙太奇拉古纳海滩在海崖上,底下是太平洋。那一层包下来,三十天,一百万美元,为了她的隐私。她住了八天就走了。
剩下的二十二天,酒店的清洁工每天照常上去。是我的助理讲的,她去交钥匙的时候撞见过一次:一个墨西哥女人推着车,一间一间进,换毛巾,擦台面,把被角掖好,退出来把门带上。做完一整层,两个小时。
助理问她,没人住,为什么还要做。
她说,登记上写着有人。
一座失去皇后的凡尔赛宫。
我突然意识到,景甜喜欢这个。景甜喜欢一个地方因为她而空着。什么都不发生。
与蒙太奇拉古纳海滩一起空置的,还有一架湾流G700尴尬地停在Van Nuys,机组每天照常报到。
第八天她打了那个电话。之后没有人再见过她。


2007年,已经有人替她烧钱了。那年我刚进北大。
当然,烧钱的不是我。
QQ弹出一个窗口,代言人是她。就在那台联想IBM的老机器上,分辨率糊得很。我把图片存下来了。
我在一年房租一千块的北大宿舍上网,在校内网上找到她,发了好友申请。校内网要填一句留言,我写了删,删了写,弄了大概四十分钟,最后发出去一句“你好”。
她没有通过。
她也许根本没用过校内网。
后来这些年,我做每一件事的时候都在想一个问题:到了什么程度,她会通过。第一个十亿的时候我想过,一百亿的时候我想过。
后来我不想了。人人网早就倒闭了。
我没有再申请第二次。
2011年,北京冷。我买了一件羽绒服,一百五十块。我记得这个价格,因为我犹豫了三天。
同一年她拍了一部一亿五千万的电影《战国》。孙红雷、吴镇宇、金喜善、中井贵一、姜武就像十九年后的蒙太奇拉古纳海滩与湾流G700一样被请来做了陪衬,他们不知道自己为什么出现在这里,来都来了,总得发生些什么,但是什么都没有发生。
再后来是一亿五千万美元的《长城》。张艺谋,刘德华,马特·达蒙。再后来是成龙。景甜宇宙的名单越来越长。
我那时已经在美国了,读书,创业,越来越忙。唯一没变的是,每换一台设备,无论多麻烦,我都把那张QQ图片导过去。
十九年后,名单上加了我。


瑰丽酒店我们见了第一面。我一直以为见到她那天我会紧张。
我没有。
她比照片上瘦,穿得很随意,靠在沙发上。我看着她,忽然想不起来我等的到底是什么。
我带她去看卡特兰的香蕉。她看了很久,问我,这个多少钱。
六百二十万美元。
她说,那它烂了怎么办。
我沉默了。她说,不管了,我们去看电影吧。
我说好。
她说放映厅里除了我们两个,不能有任何人。
我说好。
我出去打了个电话。回来的时候她还站在那根香蕉前面。
那部电影是《疯狂动物城2》。
两个人的放映厅,这种场景一般用于中宣部审片。
我让助理把电影院所有的座位都买下来。
我看过批判刷假票房的文章,说票买光了只有两个人看。现在我明白了,也许不全是为了票房。
把座位全买下来不难,麻烦的是已经卖出去的票。助理和保镖提前到影院门口,遇到买了票的观众,把现金递过去。
一对带孩子的夫妻来了,孩子已经在门口高高举着爆米花。
助理递上一沓钱,孩子不懂为什么不能进去,大人接过钱,道谢,什么也没问,走了。
那天领钱的有二十六个人。
看完她把微信头像换成了朱迪警官。
晚上我用手揉她的奶子,被她推开了。
我以为她不愿意。我把手收回来,准备说点什么。
她没说话。她坐起来,从包里翻出一个小袋子,拉开,里面一排东西,像一套很小的工具。
她说,你的指甲扎得我痛。
我看了一眼。我一直是拿指甲刀随便剪两下,边上是尖的,平时不觉得。
她说,过来。
她把我的手放在她腿上,一根一根磨。
先是粗的那一面,磨完换一面,再换一面。磨一会儿举起来对着灯看看,再接着磨。
我说这个要磨多久。
她说,磨到不刮人为止。
十个手指,她花了快一个小时。
中间她教我,这一面磨形状,这一面抛光,最后一面不要来回蹭,要顺着一个方向。
我说好。
磨完她把我的手翻过来看了看,摸了一下。
她说,行了。
摸吧,想摸哪都行。
中间她说过一句话。她说,要是以后我不在了,就再没有人给你抛指甲了。
我笑了一下,没说话。
认识她三个月的时候,我让人做了一份东西。她那些年的项目、合作方、公司股权、景国庆,田心爱,所有的几个关联账户,北京租的房,上海买的房,还有一些别的。一周就做完了,一共四十几页。还有些男男女女的事情,我觉得这是最不重要的。
里面有一些事她后来跟我讲过,讲的和上面写的不太一样。我没有说。
有一些事她一直没讲。我也没有问。
我全部相信她说的。
那份东西我留着,一直留到现在。
但是我一个字也不信。


她说,香港人太多,会被认出来,我们出去走走。
我说好。
她在地图上指了一下特纳里费。
我说好。
我出去打了个电话,回来才知道那个地方位于非洲西北海岸外的大西洋上。第二天中午,我们一行三十个人出发了,A330在机场等着。
飞机的卧室里她问我,我的名字好听吗。
我说好听。
她说,我爸爸的姓和我妈妈的姓拼在一起的,是不是很巧。
我说我第一天就记住了。
她抱着我说,以后别叫我景甜了,叫我妈妈吧。
好,妈妈。
落地以后机长过来告诉我,老板,岛上一开始不让降,他们没见过这么大的私人飞机。
岛上规矩一样,周围不能有人。助理去处理了,没有人问为什么,这次我没问多少人。
丽兹卡尔顿正对着大西洋,落地窗太大。她睡觉不能有一丝光。助理用黑胶带把整个房间贴起来,外面亮如白昼,里面黑得像禁闭室。胶带一晒就掉,每天要重贴。
助理一共十一个人,早上六点半到,等我们睡了才走。贴胶带的是两个女孩,一个负责窗框,一个负责空调和插座的指示灯,贴完再检查三遍。胶带买了三十卷,后来又补了二十卷。她们发现下午三点以后贴的最容易掉,因为那时候玻璃最烫,后来改成早上贴。这件事没有人教她们,是她们自己试出来的。她们互相之间会讨论,像讨论一项工艺。
她知道那两个女孩叫什么。我不知道。
我们在泰德公园的公路边停下看日落,助理从车上搬下来玫瑰花,开了香槟。
妈妈看着云海说,好美。不过不如青海德令哈的日落。
我是青海人。
我没有说。
夜晚我们在山顶看星星,穿着棉袄还是冷。
妈妈说,许个愿吧。
我问,你许了什么。
妈妈说,不告诉你。
妈妈说,太美了。但就是太冷了,我们去马尔代夫好不好。
我说,好吧。
特纳里费零下十五度,马尔代夫二十七度,直线距离九千五百公里,飞十一个小时。不过马尔代夫的机场太小了,我们宽体客机中途得换成小飞机。
妈妈说,小飞机声音好吵。还是大飞机好。
去马尔代夫的飞机卧室里,妈妈跟我说,她许的愿是,和我要一个孩子。必须代孕。
我没有问过为什么。我以为她怕疼。
中途妈妈突然坐起来找手机,连上星链,说糟了。
我问怎么了。
她说,有个人要威胁我,问了三天了,我一直没回。
我说要多少。
她说不用你管。
她打字打了很久,删了改,改了删。打完把手机扣在腿上,过一会儿又翻过来看。
我问那人是谁。
她说,以前跟我一起的,财务,进去了,扛了事。
出来走投无路,一定要找我。
我说,干脆报警抓了。
她看了我一眼。你不懂。
我说你给了吗。
她说给了。
多少。
八万。
我说这个也用得着想三天。
她没说话。
那天剩下的时间她一直没怎么说话。落地了才睡着。
最早到索尼娃贾尼的是妈妈的箱子。三十个人的行李,小飞机装不下,分了三架。妈妈只有一只箱子,单独一架,她说不要和别人的放在一起。
索尼娃贾尼是出了名的no news, no shoes,妈妈放心了。
酒店管家,保镖,助理,一共配了二十六个人,还有两个无人机手远远跟着。助理们又开始贴胶带了,空调的灯,插座的灯,一遍又一遍。
晚上我们像交换暗号一样交换了彼此的前任,就像一个王朝在核对年号。妈妈不愿意有任何差池,不过妈妈有个禁忌词,那个运动员不能提。
我没提,虽然我知道,妈妈背上的纹身是因为运动员纹的。
可能因为太大了洗不掉。
她说,现在我们是一家人了。我爸妈把我养这么大不容易,你得给彩礼。
我说好。
她报了两个名字,景国庆、田心爱,和两个账号。
三千万,人民币。
我转了。那两个名字,我是在那四十几页里第一次见到的。
过了一会儿,她把手机递过来给我看。田心爱回了两个字:收到。
有一次妈妈说,你知道我要这些东西的时候在想什么吗。
我说什么。
她说,我在想,你会不会有一次说不。
我说不会。
她说,那就没意思了。
我想,我又有什么做不到吗?
太无聊的时候,我在摆弄那张2007年的QQ图片,想传到新设备上。妈妈把头凑过来,你怎么背着我存别的女人的照片,这是谁。
我沉默了。什么也没说。
她看图太糊了,就去忙别的了。
那天晚上我把那张图删了。
第二天又从旧手机里找回来了。
妈妈手机也刷个不停,我问她看什么。
她说没什么,就是撕番位的那些破事。
撕番位,一部戏只能有一个明星排第一。男一女一也只能有一个人排第一。
我说无聊啊。
她说,是啊。更难的是,有时候剧组夫妻,一进组四五十天,一般和一个男的拍戏,晚上做爱,白天还要撕番位。
我说太反人性了。
她说是啊。
不过拍完戏了,无论之前做过多少次爱,就当一切都没发生。
然后她又看了半个小时。
2026年1月2日,索尼娃贾尼,新的一年,我向妈妈求婚了。
是1月1日早上决定的。戒指在香港。岛上没有卖戒指的地方,助理坐水上飞机去了马累,下午回来,戒指装在一个酒店的信封里。
妈妈说,钻戒太小了。
妈妈说,没事,以后补个大的。
另外,你能来北京吗?
我沉默了。
她以为我不想去。
妈妈说,你为什么对我这么好。
我说因为我喜欢你。
她说,那你以前对别人也这样吗。
我说没有。
她笑了一下,没说话。
有一天早上我醒得早,她不在床上。
我出去看,她坐在露台上,对着海,整个海是黑的。没开灯,天还没亮。
我问她怎么起这么早。
她说,我在算日子。
我说算什么。
她说,你回去睡吧。
我在她旁边坐了一会儿,不知道说什么。后来我回去睡了。
我再醒过来的时候她已经化好妆了。
在马尔代夫待了十四天,没有一个人认出她。
第十三天晚上在餐厅,她把墨镜摘了。过了一会儿,帽子也摘了,放在桌上。她就那样坐了一顿饭。隔壁桌是一对德国老夫妻,服务生是斯里兰卡人,没有人多看她一眼。
吃完她把帽子戴回去了。
妈妈说,我们回去吧。
我说不是还没住够吗。
她说,太安静了。
回到香港,妈妈见了我父母。
当天晚上她说,家里要筹备两家见面和婚事,尽可能多打点。还是景国庆和田心爱。
我没问为什么。
我说一天一张卡限额一百万。
妈妈说太慢了。
转五张。
五张卡,两个账号,轮着转。转到第三张的时候,我犹豫了一下。我还是转完了。
妈妈说,效率太低了。
我说,过年把咱爹妈接到香港来一起过吧。
妈妈说,今年已经定好在海南过年了。明年吧。
春节,维港放烟花,来了一百万人。没有她。
凌晨三点,我把父母送回去。
路上很空,红灯没有一辆车在等,我还是停了。
妈妈说先不见了,马上去洛杉矶取卵了。手头的事情要先处理完。
妈妈又问,能来北京吗?
我沉默了。
她没有说北京有什么。我也没问。
妈妈说,香港必须买一套房子,写她的名字。
我说,好吧。
情人节也没见面。
有一次她在电话里说,今天早上抽了八管血。
我说这么多。
她说还好。
我说辛苦了。
然后我们聊了别的。
后来我才知道,那种抽血要空腹,要在月经周期的第二天或者第三天,日子不能错。她那天早上大概六点就出门了,北京的冬天,天还没亮。后来的检查越来越多。我知道这件事,是因为助理每月的汇总付款单里多了一项。第一次出现是去年,金额不大,几千块。后来每个月都有,有时候两三笔。我批得很快。这类金额不需要我看明细。后来才知道那些是抽血、激素六项、B超、AMH。要看她还有多少储备,能取出来几个,值不值得往下走。
这些都是在北京做的。
我不知道是哪家医院。我也不知道她是自己去的,还是有人陪。
2月25日她落地香港。
她说不去洛杉矶了,除非先看到香港的房子。
我把过去半年看的十几套房都发给她。她都嫌不好看。那十几套房我一套也没去过,是助理花了半年一间一间挑的,助理转给我,我转给她。有一套在半山,视频里能看见维港,拍的是傍晚。有一个瞬间镜头晃了一下,拍到了拍视频的人的影子在墙上。我看着那个影子想,这个人是谁,他今天走了多少路,看了多少房,他知不知道这套房是给谁看的。
时间太紧,她还是上了去洛杉矶的G700,2月28日飞到蒙太奇拉古纳海滩。


第八天妈妈打了电话。她那边是下午,我这边是凌晨。
她说,五千万,美元。
我说,让我想想。
她没有说话。我听见她那边有海。
过了一会儿她说,好。
她挂了。
我认识她以来,没有对她说过“让我想想”。
我用Claude Code读API把所有现金资产跑了一遍,结论是对我不会有任何影响。我又核了一遍。我在Claude Code里输入了问题,Claude说,不要把这五千万美元给她。
我问,她不再爱我了吗?
Claude说,对于爱情,我不关心,也不理解。但是你不能把这五千万美元给她。
我从来没有拒绝过她,不是慷慨,是害怕。害怕下一秒的答案。
而现在有人替我说了。
我盯着那行字看了很久。让我毛骨悚然的不是它聪明,是Claude一点犹豫都没有。
它不为难。
我当时想,这大概是更高的一种东西。人做不到这样。
她不再爱我了吗。
第二天她打回来。
妈妈说,海很大。
我说是吗。
她说,这层楼太大了,有回声。早上有人来打扫,我躲在卫生间里等她们走。
我说可以不让她们来。
她说不用。
她说,诊所问我,孩子的父亲什么时候到。
我说我可以派人过去。
她说,不用。
然后她说,想好了吗。
我没有说话。不是在想,我没有在想任何事。电话里她那边有海,我这边是维港,两边都没有人说话。我数了一下,十一秒。
景甜说,行。
景甜说,我知道了。
她挂了。
我后来无数次回想过,那两天她除了五千万还说了什么。海很大,这层楼太大,她躲在卫生间里。就这些,我全记得,一个字不差。我记不起来的是她的声音——她说“我知道了”的时候,是什么语气。
我想不起来。后来我就不想了。
我把手机放在床头柜上,屏幕朝下。然后我做了一件事,至今不知道为什么:我把手放在胸口,数了一下。
心跳很稳。
我又数了一遍,还是很稳。一分钟六十几下,和平时没有区别。我坐在那里,手按着自己的胸口,像一个医生在给别人做检查。
我想,原来是这样。
那天剩下的时间我什么也没干。我在房间里待到天黑又到天亮,看着维多利亚港从蓝色变成灰色再变成黑色。早晨六点,维港对面的金融中心一栋一栋地开始亮灯。中间助理敲过一次门,问晚餐怎么安排,我说不用了。
我没有哭。我一直在等我哭。


后来助理跟我结账,里面还有一项是特纳里费的酒店赔偿。我们走了以后,胶带又贴了几天,没人告诉她们不用贴了。酒店说贴得太久,次数太多,窗框上的胶痕清不掉,那面玻璃要整块换掉。
我说批了。
那面玻璃朝着大西洋。
账单里飞机燃油那一项,比蒙太奇那一层楼还贵。我问了一下。助理说,A330是按两百人设计的,我们只有三十个人,太轻了,起飞的配平不对。所以每次都要多加油,加到够重为止。到了地方,多加的那些又不能留着,得放掉。
我说,每次都这样?
他说,每次都这样。
还有洛杉矶诊所寄回来的一个箱子。八天的促排针,要冷藏的,一支没拆。
还有代孕机构的定金,二十万美元,不退。代孕的人一月就定好了,加州人,三十四岁,生过两个。档案里有她的照片,我没看过。她一月就准备好了。
景甜走后,我把那张2007年的照片翻出来看了一次。十九年了,设备像素越来越高,而这张图,仿佛像素越来越低,脸都是糊的。我放大看了很久,想找出她和后来有哪里不一样。一处也没找出来。因为那张照片本来就看不清。
有一天我用指甲刀剪指甲,剪完摸了一下,是尖的。
我想起来抽屉里还有那个东西,她留下的。
我拿出来磨了两下,不对。她说过要顺着一个方向,我忘了是哪个方向。
我把它放回去了。
我的指甲现在还是磨人的。
有一天早上手机弹出一个提醒,是助理去年排日程的时候设的:预产期前三个月,准备房间。
我把它划掉了。
她走了以后,我一直在想一个问题。
如果那天我给了,她会留下来吗。
我想了很久。
后来我把那份东西拿出来,又看了一遍。四十几页。
然后我想起春节那天晚上,在顶楼俯瞰香港维港的烟花。
一百万人像潮水一样涌来,烟花结束,一百万人退去。
一百万人。
每年都是这样。
凌晨三点的香港,
什么都没有发生。

本文纯属虚构,如果雷同实属巧合
不设版权,请随意转发分享

后续记录与版本:
hejustinsun.com
github.com/HEJustinSun

systemd 默认采用 KillMode=control-group 模式,在停止或重启服务时会强行杀死该服务控制组内的所有进程。这可能导致 v2rayA 在关机或重启时未能正常保存或清理状态,进而引发宿主机重启后代理无法自动启动。将模式改为 KillMode=process,可以确保 systemd 仅终止主进程,避免子进程被误杀。

操作步骤

1. 创建 systemd 配置重写目录

为 v2raya 服务创建独立的配置扩展目录:

1
mkdir -p /etc/systemd/system/v2raya.service.d/

2. 创建并编辑配置文件

使用 nano 编辑器新建名为 fix-killmode.conf 的配置文件:

1
nano /etc/systemd/system/v2raya.service.d/fix-killmode.conf

3. 写入配置内容

在打开的文件中粘贴以下文本,重写默认的 KillMode 参数:

1
2
[Service]
KillMode=process

保存并退出(在 nano 中按 Ctrl+O 再按 Enter 保存,最后按 Ctrl+X 退出)。

4. 重载配置并重启服务

刷新 systemd 服务配置以使改动生效,并重启 v2rayA:

1
2
systemctl daemon-reload
systemctl restart v2raya

重启后使用命令 sudo systemctl status v2raya.service 查看应该如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
● v2raya.service - A web GUI client of Project V which supports VMess, VLESS, SS, SSR, Trojan, Tuic and Juicity protocols
Loaded: loaded (/etc/systemd/system/v2raya.service; enabled; preset: enabled)
Drop-In: /etc/systemd/system/v2raya.service.d
└─fix-killmode.conf, override.conf
Active: active (running) since Fri 2026-08-28 00:25:25 CST; 11min ago
Docs: https://v2raya.org
Main PID: 192482 (v2raya)
Tasks: 35 (limit: 34706)
Memory: 107.4M (peak: 318.2M)
CPU: 7.336s
CGroup: /system.slice/v2raya.service
├─192482 /usr/local/bin/v2raya
└─192522 /usr/local/bin/v2raya_core run --config=/usr/local/etc/v2raya/config.json

828 00:25:25 yt-sh-ubuntu-2025 systemd[1]: Started v2raya.service - A web GUI client of Project V which supports VMess, VLESS, SS, SSR, Trojan, Tuic and Juicity protocols.
828 00:25:25 yt-sh-ubuntu-2025 v2raya[192482]: [DEBUG] main.main started

出现这个 /usr/local/bin/v2raya_core run --config=/usr/local/etc/v2raya/config.json 就是正常的。

具体原因可以查看github上面这个讨论

gdm3[1382]: Gdm: GdmSession: no session desktop files installed, aborting...

先说解决方案

1
2
sudo apt install ubuntu-session
sudo systemctl restart gdm.service

之后就能重新显示GUI界面登录了。

某重启ubuntu后,突然就卡到登录界面,Failed to start gdm.servide - GNOME Display manager

开机进入recovery模式 -> 选择root Drop to root shell prompt选项 -> 然后回车,系统会提示你输入root用户的密码

查看系统最近一次的启动日志

1
journalctl -b -1

sudo apt install --reinstall ubuntu-desktop 无法解决
apt autoremove --purge snapd 也无法解决

最后找在这找到正确答案: https://askubuntu.com/questions/1515996/gdmsession-no-session-desktop-files-installed-after-rebooting

journalctl --unit gdm.service --no-pager 会显示具体错误内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
gdm-launch-environment][1640]: pam_unix(gdm-launch-environment:session): session opened for user gdm(uid=120) by (uid=0)
gdm3[1632]: Gdm: GdmSession: no session desktop files installed, aborting...
systemd[1]: gdm.service: Main process exited, code=dumped, status=5/TRAP
systemd[1]: gdm.service: Failed with result 'core-dump'.
systemd[1]: gdm.service: Triggering OnFailure= dependencies.
systemd[1]: gdm.service: Scheduled restart job, restart counter is at 4.
systemd[1]: Starting gdm.service - GNOME Display Manager...
systemd[1]: Started gdm.service - GNOME Display Manager.
gdm3[1713]: accountsservice: ActUserManager: user (null) has no username (uid: -1)
gdm-launch-environment][1719]: pam_unix(gdm-launch-environment:session): session opened for user gdm(uid=120) by (uid=0)
gdm3[1713]: Gdm: GdmSession: no session desktop files installed, aborting...
systemd[1]: gdm.service: Main process exited, code=dumped, status=5/TRAP
systemd[1]: gdm.service: Failed with result 'core-dump'.
systemd[1]: gdm.service: Triggering OnFailure= dependencies.
systemd[1]: gdm.service: Scheduled restart job, restart counter is at 5.
systemd[1]: gdm.service: Start request repeated too quickly.
systemd[1]: gdm.service: Failed with result 'core-dump'.
systemd[1]: Failed to start gdm.service - GNOME Display Manager.
systemd[1]: gdm.service: Triggering OnFailure= dependencies.
systemd[1]: Starting gdm.service - GNOME Display Manager...
systemd[1]: Started gdm.service - GNOME Display Manager.
gdm3[28263]: accountsservice: ActUserManager: user (null) has no username (uid: -1)
gdm-launch-environment][28269]: pam_unix(gdm-launch-environment:session): session opened for user gdm(uid=120) by (uid=0)
gdm-password][28703]: gkr-pam: unable to locate daemon control file
gdm-password][28703]: gkr-pam: stashed password to try later in open session
gdm-password][28703]: pam_unix(gdm-password:session): session opened for user zhanglei(uid=1000) by zhanglei(uid=0)
gdm-password][28703]: gkr-pam: unlocked login keyring
gdm3[28263]: Gdm: on_display_added: assertion 'GDM_IS_REMOTE_DISPLAY (display)' failed
gdm3[28263]: Gdm: Child process -28274 was already dead.
gdm3[28263]: Gdm: on_display_removed: assertion 'GDM_IS_REMOTE_DISPLAY (display)' failed

记录一次腾讯云镜像在本地恢复的过程

由于遇到一些限制原因导致出现了诸多错误,无法顺利恢复,不过最终经过多次尝试,终于恢复成功,特记录一下。

腾讯云被封,无法远程ssh连接

虽然无法访问服务器,但通过网页仍可以访问,但由于所有网络都断了,不可能下载大量数据了,想到了创建镜像然后导出到本地的操作

腾讯云创建镜像导出本地,需要先创建一个存储桶(第一次开通免费,个人50G,企业1T),并且流量是收费的,为了下载这个镜像不得不付钱搞定,整个流程到这还比较快。

无法正常恢复

镜像下载的为.vmdk镜像,下载到本地后,导入virtualbox,开机启动,出现错误 warning: /dev/vda1 does not exist

虚拟机创建时,选择不添加虚拟硬盘,创建完成后在设置中(选择存储,在控制器那里添加硬盘)附加镜像即可

在vnc里用ls /dev查看设备信息显示的结果中并不存在/dev/vda1,存在/vda/sda1

如果/vda/sda1也不存在,看看你的虚拟机是不是硬盘设置中位置没有放到 SATA端口0 的位置。

通过以下办法可以启动

进入VPS服务商提供的VNC后台界面,执行下面语句

1
2
3
4
# mount /dev/sda1 /tmp
# sed -i ‘s/vda/sda/g’ /tmp/etc/fstab
# sed -i ‘s/vda/sda/g’ /tmp/boot/grub2/grub.cfg
# reboot

当然,如果你更改虚拟机有时默认是正常的,那就最好不过了。原因就是虚拟机中的硬盘是sda1 但镜像中保存的是原始数据 vda1,启动时无法找到相应硬盘。

centos7 root密码恢复

  • 开机按下Ecs键,进入启动界面
  • 根据需要选择系统内核版本并按e
  • 光标移动到 linux 16 开头的行,找到 ro 改为 rw init=sysroot/bin/sh
  • Ctrl+x 执行
  • 进入如下界面后输入chroot /sysroot
  • 输入passwd根据提示输入两次新密码
  • 完成后输入 touch /.autorelabel 更新系统信息
  • 键入 exit 退出
  • 然后使用reboot命令重启

postgresql的恢复

我主要为了恢复这个数据库,但在本地启动后无法成功启动应用,只能新建一个同样版本的Centos7,然后把数据库data目录复制过去,启动成功。

流程如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[extras]
gpgcheck=1
gpgkey=http://mirrors.tencentyun.com/centos/RPM-GPG-KEY-CentOS-7
enabled=1
baseurl=http://mirrors.tencentyun.com/centos/$releasever/extras/$basearch/
name=Qcloud centos extras - $basearch
[os]
gpgcheck=1
gpgkey=http://mirrors.tencentyun.com/centos/RPM-GPG-KEY-CentOS-7
enabled=1
baseurl=http://mirrors.tencentyun.com/centos/$releasever/os/$basearch/
name=Qcloud centos os - $basearch
[updates]
gpgcheck=1
gpgkey=http://mirrors.tencentyun.com/centos/RPM-GPG-KEY-CentOS-7
enabled=1
baseurl=http://mirrors.tencentyun.com/centos/$releasever/updates/$basearch/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
yum update
yum install net-tools wget -y

yum install yum-fastestmirror
yum clean all

yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum update

yum install -y postgresql15-server

# 如果提示 `libzstd版本不对问题`
yum install libzstd*
yum install epel-release.noarch -y
yum install libzstd.x86_64 -y

/usr/pgsql-15/bin/postgresql-15-setup initdb
systemctl start postgresql-15
systemctl status postgresql-15


远程数据同步到本地

`rsync -a -e "ssh -p xxxx" root@192.168.56.1:/root/data/ /var/lib/pgsql/15/data/`

cp -p data-origin/postgresql.conf data/

systemctl start postgresql-15

网站使用cloudflare时,无法得到真正的ip,如果知道域名的ip,一般使用下面的命令探测

1
curl -v -H "Host: leadscloud.xyz" 167.172.xx.xx

CURL重定向

通过-L选项进行重定向 默认情况下CURL不会发送HTTP Location headers(重定向).当一个被请求页面移动到另一个站点时,会发送一个HTTP Loaction header作为请求,然后将请求重定向到新的地址上。

1
2
# 让curl使用地址重定向,此时会查询google.com.hk站点
curl -L http://www.google.com

下载单个文件,默认将输出打印到标准输出中(STDOUT)中

curl http://www.centos.org

通过-o/-O选项保存下载的文件到指定的文件中:

  1. -o:将文件保存为命令行中指定的文件名的文件中
  2. -O:使用URL中默认的文件名保存文件到本地
# 将文件下载到本地并命名为mygettext.html
  curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
 
# 将文件保存到本地并命名为gettext.html
  curl -O http://www.gnu.org/software/gettext/manual/gettext.html

同样可以使用转向字符”>”对输出进行转向输出

同时获取多个文件

curl -O URL1 -O URL2

若同时从同一站点下载多个文件时,curl会尝试重用链接(connection)。

断点续传

通过使用-C选项可对大文件使用断点续传功能,如:

# 当文件在下载完成之前结束该进程
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
##############             20.1%

# 通过添加-C选项继续对该文件进行下载,已经下载过的文件不会被重新下载
curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html
###############            21.1%

CURL授权

1
2
3
4
curl -u username:password URL

# 通常的做法是在命令行只输入用户名,之后会提示输入密码,这样可以保证在查看历史记录时不会将密码泄露
curl -u username URL

上传文件到FTP服务器

通过 -T 选项可将指定的本地文件上传到FTP服务器上

# 将myfile.txt文件上传到服务器
curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com

# 同时上传多个文件
curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com

# 从标准输入获取内容保存到服务器指定的文件中
curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

为CURL设置代理

x 选项可以为CURL添加代理功能

 # 指定代理主机和端口
 curl -x proxysever.test.com:3128 http://google.co.in

保存与使用网站cookie信息

 # 将网站的cookies信息保存到sugarcookies文件中
 curl -D sugarcookies http://localhost/sugarcrm/index.php
 
 # 使用上次保存的cookie信息
 curl -b sugarcookies http://localhost/sugarcrm/index.php

设置user-agent

-A参数指定客户端的用户代理标头,即User-Agent。curl的默认用户代理字符串是curl/[version]

1
$ curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' https://google.com

也可以通过-H参数直接指定标头,更改User-Agent

curl -H 'User-Agent: php/1.0' https://google.com

传递请求数据

默认curl使用GET方式请求数据,这种方式下直接通过URL传递数据
可以通过 –data/-d 方式指定使用POST方式传递数据

# GET
curl -u username https://api.github.com/user?access_token=XXXXXXXXXX

# POST
curl -u username --data "param1=value1&param2=value" https://api.github.com

# 也可以指定一个文件,将该文件中的内容当作数据传递给服务器端
curl --data @filename https://github.api.com/authorizations

注:默认情况下,通过POST方式传递过去的数据中若有特殊字符,首先需要将特殊字符转义在传递给服务器端,如value值中包含有空格,则需要先将空格转换成%20,如:

curl -d "value%201" http://hostname.com

在新版本的CURL中,提供了新的选项 –data-urlencode,通过该选项提供的参数会自动转义特殊字符。

curl --data-urlencode "value 1" http://hostname.com

除了使用GET和POST协议外,还可以通过 -X 选项指定其它协议,如:

curl -I -X DELETE https://api.github.cim

上传文件

curl --form "fileupload=@filename.txt" http://hostname/resource

获取更多信息

通过使用 -v 和 -trace获取更多的链接信息

显示头信息

  • -i 参数:可以显示http response 的头信息,连同网页代码一起。
  • -I 参数:则只显示http response 的头信息, 不显示网页源码。 同 –head

centos7服务器升级node 20后 n latest,出现以下问题

1
2
3
4
5
6
node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node)
node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node)

明显是GLIBC_2.27支持问题

更新glibc

1
2
3
4
wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
tar xf glibc-2.28.tar.gz
cd glibc-2.28/ && mkdir build && cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

在这之前一般都要升级gcc和make,否则在configure时会出现下面错误

1
2
3
configure: error: 
*** These critical programs are missing or too old: make bison compiler
*** Check the INSTALL file for required versions.

升级GCC和make

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 升级GCC(默认为4 升级为8)
yum install -y centos-release-scl
yum install -y devtoolset-8-gcc*
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++

# 升级 make(默认为3 升级为4)
wget http://ftp.gnu.org/gnu/make/make-4.3.tar.gz
tar -xzvf make-4.3.tar.gz && cd make-4.3/
./configure --prefix=/usr/local/make
make && make install
cd /usr/bin/ && mv make make.bak
ln -sv /usr/local/make/bin/make /usr/bin/make

如果提示 These critical programs are missing or too old: bison 升级或安装下bison

1
yum install -y bison

继续安装glibc

1
2
3
4
cd /root/glibc-2.28/build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

make && make install

如果出现错误

1
/usr/bin/ld: cannot find -lnss_test2

请修改scripts/test-installation.pl,新增如下内容 128行左右

1
&& $name ne "nss_test1" 

改为

1
&& $name ne "nss_test1" && $name ne "nss_test2"

如果报错

1
/lib/../lib64/libnss_nis.so: undefined reference to `_nsl_default_nss@GLIBC_PRIVATE'

请加–enable-obsolete-nsl

1
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin --enable-obsolete-nsl

如果还是出现

1
2
3
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node)
node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node)

通过查看strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX 发现少了GLIBCXX_3.4.20,解决方法是升级libstdc++.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
yum provides libstdc++.so.6


cd /usr/local/lib64
# 下载最新版本的libstdc.so_.6.0.26
wget http://www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip
unzip libstdc.so_.6.0.26.zip
# 将下载的最新版本拷贝到 /usr/lib64
cp libstdc++.so.6.0.26 /usr/lib64
cd /usr/lib64
# 查看 /usr/lib64下libstdc++.so.6链接的版本
ls -l | grep libstdc++
libstdc++.so.6 ->libstdc++.so.6.0.19
# 删除/usr/lib64原来的软连接libstdc++.so.6,删除之前先备份一份
rm libstdc++.so.6
# 链接新的版本
ln -s libstdc++.so.6.0.26 libstdc++.so.6
# 查看新版本,成功
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

升级导致的语言包问题,中文有乱码

特别是crontab -e编辑时里面的中文有些正常,有些乱码

1
-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)

可以通过如下解决

1
2
cd /root/glibc-2.28/build
make localedata/install-locales

这样每次登录ssh就不会提示 LC_ALL: cannot change locale 了。

参考链接:

安装步骤

1
2
3
4
5
6
wget https://www.inet.no/dante/files/dante-1.4.3.tar.gz
tar xf dante-1.4.3.tar.gz
cd dante-1.4.3/
autoreconf --install --force
./configure
make install

创建并编辑配置文件

vi /etc/sockd.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
internal: 0.0.0.0 port=1080
external: eth0

clientmethod: none
socksmethod: username # 使用系统用户名密码方式验证

#user.privileged: root
user.notprivileged: socks # 创建的用户名

client pass {
from: 0/0 to: 0/0
#log: connect disconnect error
}

socks pass {
from: 0/0 to: 0/0
#log: connect disconnect error
}

127.0.0.1 替换成 x.x.x.x/8 即可。

配置说明: https://www.inet.no/dante/doc/1.4.x/config/server.html

添加用户

1
2
3
adduser --no-create-home --shell /usr/sbin/nologin socks # 添加一个本地用户,不创建默认目录和登录Shell

passwd socks # 设置一个密码

运行

直接以daemon模式运行

1
sockd -D

测试代理

使用内置的-V命令测试sockd.conf文件是否正确,若正确则无任何输出

1
sockd -V

测试能否正常使用

1
curl --proxy 'socks5://127.0.0.1:1080' 'https://api.ipify.org/'

可以使用 netstat -lntp 看启动状态

1
tcp        0      0 0.0.0.0:1080            0.0.0.0:*               LISTEN      16769/sockd

开机启动

vi /etc/rc.local

1
/usr/local/sbin/sockd -f /etc/sockd.conf &

关闭

killall sockd

Google的API一般是下面这种使用方法,使用的是oauth2client

1
2
3
4
5
6
from oauth2client.service_account import ServiceAccountCredentials
import httplib2
credentials = ServiceAccountCredentials.from_json_keyfile_name(JSON_KEY_FILE, scopes=SCOPES)
http = credentials.authorize(httplib2.Http())

response, content = http.request(ENDPOINT, method="POST", body=json_ctn)

众所周知的原因,在国内你这样使用,必须得用代理,使用requests包非常方便,但是如果是上面的代码,使用代理有点小麻烦

你需要在代码前面加上

1
2
3
import socket
socket.socket = socks.socksocket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 1080)

比较麻烦。

可以用requests代替上面的操作,一般如下

1
2
3
4
5
6
7
8
9
10
11
12
13
http = httplib2.Http(proxy_info=httplib2.ProxyInfo(httplib2.socks.PROXY_TYPE_SOCKS5, '127.0.0.1', 1080))

credentials = ServiceAccountCredentials.from_json_keyfile_name(JSON_KEY_FILE, scopes=SCOPES)
access_token_info = credentials.get_access_token(http)

requests.get(url, params={
"url": "http://foo.com"
}, proxies={
'http': "socks5://127.0.0.1:1080",
'https': "socks5://127.0.0.1:1080",
}, headers={
"Authorization": 'Bearer ' + access_token_info.access_token
})

参考代码: https://github.com/googleapis/oauth2client/blob/master/oauth2client/transport.py

安装 NGINX http_realip_module 模块

在 LNMP 安装目录下找到 lnmp.conf 这个文件,编辑这个文件,在 Nginx_Modules_Options 里加上 --with-http_realip_module,修改的命令如下:

1
Nginx_Modules_Options='--with-http_realip_module'

保存后执行 ./upgrade.sh nginx 来升级下 NGINX 就可以了。升级需要输入新的 NGINX 版本号,如果不想改动版本,直接输入原来的版本号即可。

修改 LNMP 配置启用模块

修改配置文件 /usr/local/nginx/conf/nginx.conf

创建文件 touch /usr/local/nginx/conf/cloudflare_ip.conf

然后,在 server {} 里面加上下面这一行:

1
include cloudflare_ip.conf;

在 /root 目录下创建下面文件:

1
update_cloudflare_ip.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
echo "#Cloudflare" > /usr/local/nginx/conf/cloudflare_ip.conf;
for i in `curl https://www.cloudflare.com/ips-v4`; do
echo "set_real_ip_from $i;" >> /usr/local/nginx/conf/cloudflare_ip.conf;
done
for i in `curl https://www.cloudflare.com/ips-v6`; do
echo "set_real_ip_from $i;" >> /usr/local/nginx/conf/cloudflare_ip.conf;
done

echo "" >> /usr/local/nginx/conf/cloudflare_ip.conf;
echo "# use any of the following two" >> /usr/local/nginx/conf/cloudflare_ip.conf;
echo "real_ip_header CF-Connecting-IP;" >> /usr/local/nginx/conf/cloudflare_ip.conf;
echo "#real_ip_header X-Forwarded-For;" >> /usr/local/nginx/conf/cloudflare_ip.conf;

执行一次脚本:/bin/bash /root/update_cloudflare_ip.sh

保存之后,配置 crontab 每周更新一次 Cloudflare 的 IP 地址(crontab -e):

1
0 5 * * 1 /bin/bash /root/update_cloudflare_ip.sh

修改日志记录配置

还是修改 /usr/local/nginx/conf/nginx.conf 这个文件,在 http {} 中间加入下面几行:

1
2
3
4
5
6
7
8
9
# 这是网上大部分的教程这样写的,不对,正确的请看下面的追加

map $HTTP_CF_CONNECTING_IP $clientRealIp {
"" $remote_addr;
~^(?P<firstAddr>[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|[0-9A-Fa-f]+:[0-9A-Fa-f]+:[0-9A-Fa-f]+:[0-9A-Fa-f]+:[0-9A-Fa-f]+:[0-9A-Fa-f]+:[0-9A-Fa-f]+:[0-9A-Fa-f]+),?.*$ $firstAddr;
}
log_format main '$clientRealIp [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'$http_user_agent $remote_addr $request_time';

注意: 如果include cloudflare_ip.conf; 放在 http {}中,$remote_addr会替换为真实的ip地址,不需要上面的修改了。

然后在网站记录的日志定义使用main这个日志格式

2023-6-5修改:

上面的代码是有问题的,网上大部分的教程也是如此,这用特地说明下

$HTTP_CF_CONNECTING_IP是使用cloudflare后,cf传给服务器的用户真实ip, 为了防止有人伪造headers,使用了 set_real_ip_from, 这样可以保证只能cloudflare的ip地址传过来的 headders["CF-Connecting-IP"] 我们才相信。

所以通常情况下,你不需要安装--with-http_realip_module这个组件,大部分情况下直接相信cloudflare即可。

上面的map应该修改为

1
2
3
4
map $http_cf_connecting_ip $clientRealIp {
"" $remote_addr; #如果为空,使用remote_addr
default $http_cf_connecting_ip; # 默认http_cf_connecting_ip headers传过来的值
}

上面那个匹配ip的正则是错误的,比如这个ipv6地址就无法匹配 2001:41d0:303:363::1, 这是ipv6的一种缩写形式,所以网上大部分的教程是错误的。

1
access_log /home/wwwlogs/abc.com.log main;

最后重载下nginx

1
/etc/init.d/nginx reload

这时就全部搞定了。

防火墙如何封禁真实的用户ip

开了 CDN 之后使用 iptables 是没法封禁真实 IP 地址的。

0%