我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SSH隧道动态转发端口实现SOCKS代理 + HTTP代理(Privoxy)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SSH隧道动态转发端口实现SOCKS代理 + HTTP代理(Privoxy)

一、文章概要

  • 实现效果:ssh连接远程服务器进行网络转发,本地服务连接网络代理
  • 环境:windows11/10
  • 需要工具:MobaXterm(ssh隧道端口转发),Privoxy(socks转http代理),一个云服务器

 二、步骤

1. 用SSH从本地计算机连接远程主机

多种方法选一种即可: 

  1. 命令行:ssh -C -N -D LOCAL_ADDRESS:LOCAL_PORT USER@REMOTE_ADDRESS
  2. Putty客户端
  3. MobaXteam中的MobaSSHTunnel
MobaSSHTunnel

2. Privoxy安装和配置

官网下载压缩包版本 http://www.privoxy.org/

修改配置文件:

  • 通过listen-address指定HTTP代理的监听地址和端口。默认privoxy的配置文件会带有这一项。

其格式为:listen-address  [ADDRESS]:[PORT] 

默认值是:listen-address  127.0.0.1:8118

  • 通过forward-socks5指定转发到socks代理

默认privoxy的配置文件不会配置这一项。

forward-socks5支持的格式比较复杂,但是这里只需要简单的写成如下内容就可以了:

forward-socks5 / [SOCKS_ADDRESS]:[SOCKS_PORT] .

其中“/”所在的位置是一个URL模式,与之匹配的URL都会转发到这个项目指定的socks代理。“/”这个值表示把所有请求都转发到socks5代理上去

例如:forward-socks5 / 127.0.0.1:9150 .

!注意

listen-address指定http代理监听地址只允许本地访问该端口,允许局域网(LAN)访问需要设置为:listen-address  0.0.0.0:8118

三、测试与使用

1. 浏览器

Chrome + Switchyomega:支持socks5代理

2. 命令行(Powershell)

curl -Uri www.google.com -proxy http://127.0.0.1:8118

windows中的curl命令其实是包装的Invoke-WebRequest

3. python

使用urllib3库进行测试

http代理测试代码:

import urllib3import jsonproxy_addr = 'http://127.0.0.1:8118'print(f'代理地址:{proxy_addr}')proxy = urllib3.ProxyManager(proxy_addr)resp = proxy.request('GET', 'https://httpbin.org/ip')print(resp.data.decode('utf-8'))

socks代理测试代码

from urllib3.contrib.socks import SOCKSProxyManagerimport jsonproxy_addr = 'socks5://127.0.0.1:80'print(f'SOCKS5代理地址:{proxy_addr}')proxy = SOCKSProxyManager(proxy_addr)resp = proxy.request('GET', 'https://httpbin.org/ip')print(resp.data.decode('utf-8'))url = 'https://www.google.com'resp = proxy.request('GET', url)print(f'返回状态码:{resp.status}')

四、遇到的坑

1. ping不通但是浏览器能连上?

简言之,就是ping走的是ICMP协议,在网络层(第三层),而ssr用的是socks代理是传输层 (第四层),上层协议无法对下层协议起作用,因此ping不通,但是通过http(超文本传输协议,应用层协议,在比socks代理层数更高)却可以访问。

大部分都不支持socks代理,而支持http代理

2. ssh隧道开启socks代理,其他代理隧道开启什么代理?

HTTPS代理隧道开启https、WebSocket隧道开启ws、ICMP隧道

References

建立和使用代理服务器 -doc文档

Privoxy教程使用详解_privoxy是什么东西_ZhaoYingChao88的博客-CSDN博客

来源地址:https://blog.csdn.net/m0_64768308/article/details/129480558

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SSH隧道动态转发端口实现SOCKS代理 + HTTP代理(Privoxy)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么使用Nginx实现端口转发TCP代理

本篇内容介绍了“怎么使用Nginx实现端口转发TCP代理”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!需求产生背景最近同事在测试和生产环境中
2023-06-22

编程热搜

目录