摸鱼~
从大学生到办公室的牛马,已经半年多了。 我的确还是很喜欢计算机喜欢折腾,但是和大学相比没有那么多的时间和精力了。有时我也会感觉,上班让我失去了对计算机的兴趣。后来我发现不是的,我只是不喜欢工作罢了,当我有时间去做自己的事情时,我还是很享受折腾计算机的乐趣。 我觉得除了工作的任务,是需要有一些时间来学习新的技术,尝试新的内容。在摸鱼时进步,在摸鱼时提高。不需要什么准备,有想法直接开始做。希望我的技术,在2025能有更大的提高,加油!
从大学生到办公室的牛马,已经半年多了。 我的确还是很喜欢计算机喜欢折腾,但是和大学相比没有那么多的时间和精力了。有时我也会感觉,上班让我失去了对计算机的兴趣。后来我发现不是的,我只是不喜欢工作罢了,当我有时间去做自己的事情时,我还是很享受折腾计算机的乐趣。 我觉得除了工作的任务,是需要有一些时间来学习新的技术,尝试新的内容。在摸鱼时进步,在摸鱼时提高。不需要什么准备,有想法直接开始做。希望我的技术,在2025能有更大的提高,加油!
最近考虑买一台MacBook Pro,当作新的生产力。但是目前的开发又离不开X86的windows平台,考虑使用mac进行代码开发运行,使用windows进行调试。项目中用到的数据库以及第三方的接口需要使用vpn访问内网,且vpn只能登录一个设备,所以考虑在windows上登录vpn,系统运行需要用到的数据库以及第三方接口都使用windows电脑进行转发。 数据库转发(转发tcp) 我用的是windows自带的portproxy功能 使用以下命令即可实现端口转发 netsh interface portproxy add v4tov4 listenport=[监听端口号] listenaddress=[本地IP地址] connectport=[目标端口号] connectaddress=[目标IP地址] 验证端口转发是否配置成功 netsh interface portproxy show all 如果想删除某个端口转发规则 netsh interface portproxy delete v4tov4 listenport=[监听端口号] listenaddress=[本地IP地址] 第三方接口转发 我使用的是caddy代理,只需要一行命令即可 caddy reverse-proxy --from 本机ip --to 第三方接口的内网ip 踩坑 尝试过让windows登vpn,然后开热点给另一个电脑。经测试另一台电脑连上热点只能访问外网,查资料说windows的个人热点直接走物理网卡转发,不会走代理。 尝试用caddy代理数据库的tcp连接,理论上可以使用caddy的第三方模块实现代理tcp,但是没有研究明白,放弃了,感觉caddy还是代理http请求更合适一些。 结尾 目前只是做了数据库以及第三方接口的代理,等过一段时间买到新电脑了,再继续折腾。生命不息息,折腾不止😂
Chatgpt对ip有较为严格的限制,使用Cloudflare WARP可以隐藏服务器的真实ip,解除访问限制。 安装Cloudflare WARP 官方文档 # Add cloudflare gpg key curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg # Add this repo to your apt repositories echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list # Install sudo apt-get update && sudo apt-get install cloudflare-warp 设置cloudflare warp 一定要把mode设置为proxy,然后连接。否则将无法使用ssh访问服务器。 warp-cli registration new #注册 warp-cli mode proxy # 设置代理模式为socks代理 warp-cli proxy port 40000 #设置代理端口40000 warp-cli connect # 连接 xray配置 inbounds 要开启 sniffing "sniffing": { "enabled": true, "destOverride": ["http", "tls"] } outbounds 增加配置 ...
正式系统无法访问外网,测试系统可以访问外网。正式系统的一个SDK需要向外网发送HTTP请求,考虑使用sni 代理。 软件 gost 参考文档 部署 能联网的测试机使用docker compose部署(设置xxx.com的sni代理白名单,xxx.com前面的表示白名单,不加表示黑名单) services: gost: image: gogost/gost container_name: gost ports: - "80:80" command: -L sni://:80?bypass=~xxx.com restart: unless-stopped 不能联网的正式机配置/etc/hosts 测试机ip xxx.com 我的后端是容器部署的,然后给容器配置/etc/hosts文件映射就可以了 注意 不能在构建docker image时候修改hosts,只能在容器运行时进行映射或者修改。因为构建阶段/etc/hosts是只读的。image是许多只读layer的叠加,而容器是只读layer和可读layer的叠加
最近使用一个第三方的SDK来请求数据,但是请求的服务器对ip有白名单限制,SDK使用的apache的commons-httpclient: 3.1 发送请求。于是尝试使用ApectJ运行时织入,拦截发送HTTP请求的代码,修改参数. 依赖(用的1.9.19版本) <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> </dependency> maven插件 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>aspectj-maven-plugin</artifactId> <executions> <execution> <goals> <goal>compile</goal> </goals> </execution> </executions> </plugin> 切面 import org.apache.commons.httpclient.HttpMethod; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; @Aspect @Component public class HttpClientAspect { public static HttpClientAspect aspectOf() { return new HttpClientAspect(); } @Around("execution(* org.apache.commons.httpclient.HttpClient.executeMethod(..))") public Object aroundHttpExecution(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("======================================"); Object[] args = joinPoint.getArgs(); // 获取HttpMethod参数 if (args != null && args.length > 0 && args[0] instanceof HttpMethod) { HttpMethod httpMethod = (HttpMethod) args[0]; // 添加自定义请求头 httpMethod.addRequestHeader("**********", "**********"); // 添加其他需要的请求头 } // 继续执行原方法 return joinPoint.proceed(); } } aop配置(resource:META-INF/aop.xml) <!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "https://www.eclipse.org/aspectj/dtd/aspectj.dtd"> <aspectj> <weaver options="-verbose -showWeaveInfo"> <include within="org.apache.commons.httpclient.*"/> </weaver> <aspects> <!-- 指定切面类 --> <aspect name="com.****.aspect.HttpClientAspect"/> </aspects> </aspectj> 运行时参数 -javaagent:"C:\Users\***\aspectjweaver-1.9.19.jar" --add-opens java.base/java.lang=ALL-UNNAMED