투명 프록시 프록시를 만들려고합니다.입니다. 목적은 브라우저와 웹 서버 사이에 있고 보이지 않게하는 것입니다. 여기에 제가 사용하고있는 코드가 있습니다. 불행히도 그것은 잘 작동하지 않습니다. 웹 페이지 ($base_uri
으로 참조)를 열면 브라우저 만 사용할지 또는 브라우저와 프록시 사용 여부에 따라 결과가 달라집니다. 나는 "transfer-encoding: chunked
"을 포함하여 모든 종류의 응답을 반환하는 웹 사이트에서 시도하고 있습니다 (그래서 나는 거기에있을 수있는 문제가있을 것이라고 생각합니다!). 쿠키에 문제가있을 수 있다고 생각하지만 해결 방법을 모른다 (있는 경우 ...).Perl 투명 프록시
#!/usr/bin/perl
use strict;
use HTTP::Daemon;
use LWP::UserAgent;
use HTTP::Cookies;
my $cookie_jar = HTTP::Cookies->new();
my $ua = LWP::UserAgent->new(max_redirect => 0, env_proxy => 0,keep_alive => 1, timeout => 30, agent => "Mozilla/4.76 [en] (Win98; U)");
my $d = HTTP::Daemon->new(
LocalHost => "localhost", # remove this to listen from other machines
# (i.e. open-relay... be careful of spammers!)
LocalPort => 33331
) || die;
print "[Proxy URL:", $d->url, "]\n";
fork(); fork(); fork(); # 2^3 = 8 processes
$ua->cookie_jar($cookie_jar);
my $base_uri = 'http://example.com/';
while (my $c = $d->accept) {
while (my $request = $c->get_request) {
my $uri = $base_uri . $request->uri->as_string();
my $method = $request->method;
my $req = HTTP::Request->new($method, $uri);
$request->uri($uri);
print "[[ $method >> $uri ]]\n";
my $response = $ua->simple_request($request);
$c->send_response($response);
}
$c->close;
undef($c);
}
감사합니다.
정말 프록시가 필요합니까? 아니면 그냥 데이터를 기록하고 싶습니까? 마지막으로 wireshark와 같은 스니퍼를 사용하십시오 –
[미리 정의 된 HTTP 프록시 모듈] (https://metacpan.org/search?q=http%20proxy) 중 일부를 고려해 보셨습니까? – Schwern
예, 정말 필요합니다. –