IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

使用 Perl 实现 HTTP 代理

扶凯 2011-06-10 14:06:39 累计浏览 4,138 次
本机暂存

一台开发的服务器,没有连接外网的权限,但内一网段内有一台机器可以连接外网,不想做路由和搞个 SQUID ,所以直接使用 Perl 来做了一个小的 Web 代理,最简单的实现这个功能。

这样在内部的那台开发服务器,也能使用 cpanm 来安装模块了。

我在想下面这个代理服务器,是不是世界上代码最少的代理服务器。有空可以加强一下,支持存取在本地的文件,支持 cookie,

use strict;
use warnings;
use Plack::Builder;
use Plack::Response;
use Plack::Request;
use LWP::UserAgent;
use Data::Dumper;
 
 
my $ua = LWP::UserAgent->new;
 
my $app = builder {
    sub {
        my $url = shift;
        my $req    = Plack::Request->new($url);
        my $ua_res = $ua->get($req->request_uri);
        my $res    = Plack::Response->new($ua_res->code);
        $res->headers($ua_res->headers);
        $res->body($ua_res->content);
        return $res->finalize;
    };
};

使用也非常简单,启动代理

$ plackup -p 80 proxy.pl

cpanm 是使用的 wget 下载,所以我们修改一下 wget 的代理地址
编辑.wgetrc 这个文件加入如下

http_proxy = http://x.x.x.x:80
ftp_proxy = http://x.x.x.x:80
use_proxy = on
wait = 5

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. libcurl的使用总结(二) (累计阅读 15,083)
  2. perl更新/修改/删除文本文件内容 (累计阅读 10,648)
  3. perl大牛flw传说 (累计阅读 7,714)
  4. AWStats是一个基于Perl的WEB日志分析工具。 (累计阅读 7,174)
  5. perl模块Getopt::Std用法及实例-从命令行读取参数模块 (累计阅读 7,018)
  6. 浅析linux kernel network之socket创建 (累计阅读 6,739)
  7. TCP链接主动关闭不发fin包奇怪行为分析 (累计阅读 6,710)
  8. TCP之close_wait (累计阅读 6,543)
  9. [Perl] Template::Toolkit 模板技术. (累计阅读 6,344)
  10. iPhone下的libcurl with SSL for iOS (累计阅读 6,350)