命令行工具挂代理方式

命令行工具挂代理方式

git 代理

全局代理

git config --global http.proxy http://127.0.0.1:8087
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'

清除配置

git config --global --unset http.proxy
git config --global --unset https.proxy

临时代理

git clone -c http.proxy=http://127.0.0.1:8087  

git clone -c sock.proxy=sock5://127.0.0.1:1086  http://XXX.git

ALL_PROXY=socks5://127.0.0.1:1080 git clone xxx

ALL_PROXY=socks5://127.0.0.1:1080 git push xxx

curl代理

curl -x 127.0.0.1:8087 google.com

设置 http 代理

curl -x HTTPS_PROXY://代理ip:端口 -OL https://github.com/alibaba/arthas/releases/download/arthas-all-4.0.4/arthas-tunnel-server-4.0.4-fatjar.jar
# 指定http代理IP和端口
curl -x 113.185.19.192:80 http://aiezu.com/test.php
curl --proxy 113.185.19.192:80 http://aiezu.com/test.php
 
#指定为http代理
curl -x http_proxy://113.185.19.192:80 http://aiezu.com/test.php
 
#指定为https代理
curl -x HTTPS_PROXY://113.185.19.192:80 http://aiezu.com/test.php
 
#指定代理用户名和密码,basic认证方式
curl -x aiezu:123456@113.185.19.192:80 http://aiezu.com/test.php
curl -x 113.185.19.192:80 -U aiezu:123456 http://aiezu.com/test.php
curl -x 113.185.19.192:80 --proxy-user aiezu:123456 http://aiezu.com/test.php
 
#指定代理用户名和密码,ntlm认证方式
curl -x 113.185.19.192:80 -U aiezu:123456 --proxy-ntlm http://aiezu.com/test.php
 
#指定代理协议、用户名和密码,basic认证方式
curl -x http_proxy://aiezu:123456@113.185.19.192:80 http://aiezu.com/test.php

设置 socks 代理:

#使用socks4代理,无需认证方式
curl --socks4 122.192.32.76:7280 http://aiezu.com/test.php
curl -x socks4://122.192.32.76:7280 http://aiezu.com/test.php
 
#使用socks4a代理,无需认证方式
curl --socks4a 122.192.32.76:7280 http://aiezu.com/test.php
curl -x socks4a://122.192.32.76:7280 http://aiezu.com/test.php
 
#使用socks5代理,basic认证方式
curl --socks5 122.192.32.76:7280 -U aiezu:123456 http://aiezu.com/test.php
curl -x socks5://aiezu:123456@122.192.32.76:7280 http://aiezu.com/test.php
 
#使用socks5代理,basic认证方式,ntlm认证方式
curl -x socks5://aiezu:123456@122.192.32.76:7280 --proxy-ntlm http://aiezu.com/test.php

参数说明:

-x 设置代理,格式为host[:port],port的缺省值为1080

*参考文档: *

wget代理

wget -Y on -e "http_proxy=http://127.0.0.1:8087" "google.com"

参数说明:

-Y 是否使用代理

-e 执行命令

CMD代理

通过命令行设置环境变量:
打开命令提示符(CMD)。
使用 set 命令临时设置代理:

set http_proxy=http://127.0.0.1:1080    
set https_proxy=http://127.0.0.1:1080

powershell代理

以管理员的身份运行powershell:

Start-Process powershell -Verb runAs

设置代理

netsh winhttp set proxy "127.0.0.1:7890"

检查代理:

netsh winhttp show proxy

测试连接:

iwr -Uri https://www.google.com

# or

iwr -Uri https://www.google.com | Select-Object -Property StatusCode

关闭proxy:

netsh winhttp reset proxy

bash终端设置代理

export http_proxy='http://localhost:8118'
export https_proxy='http://localhost:8118'

临时取消代理:

unset http_proxy

unset https_proxy

git bash 终端设置代理

export https_proxy=socks5://127.0.0.1:1080

众所周知 Github DNS 被污染了,所有有时候下载十分困难,LazyVim 基本上所有的东西都托管在 Github 上,所以我们其实不用梯子也可以很完美的安装好 LazyVim,用代理就行。 我喜欢用 GitHub Proxy 这个代理,也有其他代理,大家可以自行找寻。

我们打开一个终端,输入:

git config --global url."https://mirror.ghproxy.com/https://github.com/".insteadof "https://github.com/"

这样就可以让 GitHub Proxy 代理 GitHub 的 git clone , wget , curl 了。一般来说,这种 Github 代理都不会代理 ssh 协议,所以不会影响 ssh 访问 Github,另外其实 ssh 也没有被污染。

取消也很简单,首先我们看一下 git 的设置列表:

git config --list

就可以看到 Git 的一些设置

也许可以看到有这么一项:

url.https://mirror.ghproxy.com/https://github.com/.insteadof=https://github.com/

加入想取消这一项,就输入等号前面的内容:

git config --global --unset url.https://mirror.ghproxy.com/https://github.com/.insteadof

socks5转http代理

目标: 定制socks5代理转发

   |====>|       |====>|       |====>|
浏览器|     |Privoxy|     |SOCKS代理|     |目标网站
   |<====|       |<====|       |<====|

      |此阶段是 |       |此阶段是 |       |此阶段是 |

   |HTTP |       |SOCKS|       |HTTP |

privoxy简介

Privoxy 是一个代理软件。支持的平台非常多,了解更多

借由 Privoxy,我们可以控制出去的请求,还可以改写返回的响应。不必要的请求 – 比如视频广告的地址、图片广告的地址,我们可以直接 block 掉;不必要的响应内容 – 比如页面中的文字广告,我们可以借由 filter 过滤掉,不让它们在浏览器页面上显示。
– 摘自: https://www.cnblogs.com/hongdada/p/10787924.html

下载地址:

Download Address

windows平台

windows privoxy安装目录说明:

PS D:\Program Files (x86)\Privoxy> tree /f
卷 软件 的文件夹 PATH 列表
卷序列号为 0003-DE55
D:.
│  AUTHORS.txt
│  config.txt  ## 主配置文件
│  default.action
│  default.filter
│  LICENSE.txt
│  match-all.action
│  privoxy.exe
│  privoxy.log
│  privoxy_uninstall.exe
│  README.txt
│  trust.txt
│  user.action
│  user.filter

在配置文件config.txt中添加如下配置:

代理的IP地址与监听端口:

listen-address  127.0.0.1:8118

配置转发请求的代理IP地址与监听端口:

forward-socks5 / 127.0.0.1:1080 .

linux平台

系统环境

笔者的系统版本为: ubuntu20.4
笔者的socks代理为: 127.0.0.1:1080
使用的代理工具为: clashx + 某供应商提供的trojan机场 or ssh -D + 自建trojan机场

笔者自己用于备份内容
ssh -D 挂代理脚本:

版本一:

#!/usr/bin/bash
PID=$(ps aux|grep ssh|grep fgnTN|grep -v grep |awk '{print $2}')
echo $PID
# $? shell最后运行的后台PID
# $$ shell本身的PID(Proccess ID)
# $- 使用Set命令设定的Flag一览
# $* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
# $@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
# $# 添加到shell的参数个数
# $0 shell本身的文件名
# $1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…

if [ $? -eq 0 -a ! -z "$PID" ]
then
 echo "SSH Proxy server is on..."
else
 echo "SSH Proxy server is death..."
 ssh -fgnTN -D 7079 yourusernam@yourhostname
 if [ $? -eq 0 ]
 then
 echo "SSH Proxy Service restart successd."
 else
 echo "SSH Proxy Service restart failed."
 fi
fi

版本二:

笔者的脚本目录如下:

➜  scripts tree -L 1
.
├── proxy_login.sh
├── ssh_proxy.sh

proxy_login.sh负责自动登录代理服务器
ssh_proxy.sh 负责登录重启的逻辑

附件:

proxy_login.sh 脚本源码:

#!/usr/bin/expect
 set password "123456789@"
 spawn ssh -fgnTN -D 1080 installer@shop.foch.tk
 expect "installer@shop.foch.tk's password:"
 send "$password"
 expect eof
 interact

proxy_login.sh脚本的环境依赖

  1. 安装 expect
    apt-get install expect
  2. 代码注释
//这一行告诉操作系统脚本里的代码使用哪一个shell来执行。这里的expect其实和linux下的bash、windows下的cmd是一类东西。 
#!/usr/bin/expect 

//set的功能是给参数赋值,这里设置的是超时时间,计时单位是:秒   。timeout -1 为永不超时
set timeout 30

//expect脚本可以接受从bash传递过来的参数.可以使用[lindex $argv n]获得,n从0开始,分别表示第一个,第二个,第三个....参数。[lrange $argv 0 0]表示第1个参数,[lrange $argv 0 4]为第一个到第五个参数。
set ipaddr [lrange $argv 0 0]

set passwd "password"

//spawn是进入expect环境后才可以执行的expect内部命令,功能是给ssh运行进程加个壳,用来传递交互指令。
spawn ssh root@$ipaddr              

//expect也是expect的一个内部命令,功能是判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的30秒 
expect "password:"  

//send的功能是执行交互动作,与手工输入密码的动作等效。命令字符串结尾别忘记加上“\r”。
send "$passwd\r" 

//expect命令结束
expect eof 

//执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。如果你只是登录过去执行 
interact

ssh_proxy.sh脚本源码:

#!/usr/bin/bash
PID=$(ps aux|grep ssh|grep fgnTN|grep -v grep |awk '{print $2}')
echo $PID
if [ $? -eq 0 -a ! -z "$PID" ]
then
 echo "SSH Proxy server is on..."
else
 echo "SSH Proxy server is death..."
 ./proxy_login.sh
 if [ $? -eq 0 ]
 then
 echo "SSH Proxy Service restart successd."
 else
 echo "SSH Proxy Service restart failed."
 fi
fi

安装privoxy

sudo apt install privoxy

更改privoxy配置

sudo vi /etc/privoxy/config

在 froward-socks4下面添加一条socks5的,地址是127.0.0.1:1080。注意最后有一个.

forward-socks5   /  127.0.0.1:1080 .

重启privoxy服务

sudo systemctl restart privoxy.serivce

或者

sudo service privoxy restart

测试

dantefung@WIN-RL03VFUMQFV:/mnt/d/scripts$ ./ssh_proxy.sh
dantefung@WIN-RL03VFUMQFV:/mnt/d/scripts$ export http_proxy='http://127.0.0.1:8118'
dantefung@WIN-RL03VFUMQFV:/mnt/d/scripts$ curl -I www.google.com

期望结果:

HTTP/1.1 200 OK
Content-Type: text/html; charset=ISO-8859-1
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
Date: Thu, 17 Feb 2022 17:23:08 GMT
Server: gws
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Transfer-Encoding: chunked
Expires: Thu, 17 Feb 2022 17:23:08 GMT
Cache-Control: private
Set-Cookie: 1P_JAR=2022-02-17-17; path=/; domain=.google.com; Secure
Set-Cookie: NID=511=pcqU1X_oEh95me7ZnpKgUNGTmzSvSRIizVdUHVZTDZGQBwiyLtRMKW1ZokdQsczrA0TeX8EmEV2OpihlqPgK-6-JAw8ZmQrcPYcFyfbEliFd2PxPdZOPZ2A9M_svTXEITKNtoW_1k6t3tViNObjVly-IxFJxPApfaAg92qrK-3k; path=/; domain=.google.com; HttpOnly
Proxy-Connection: keep-alive

Reference


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!