perl - 使用 curl 和 perl 代理

标签 perl curl tcp proxy

我想用 Perl 脚本检查我们的代理是否正常工作。我使用 curl 命令测试了我们的代理,它按预期工作:

curl -x 'http://our_proxy:port' -v 'http://www.some_adult_site.com'

这让我在 Wireshark 中得到以下 TCP 流输出:

GET http://www.some_adult_site.com/ HTTP/1.1
User-Agent: curl/7.35.0
Host: www.some_adult_site.com
Accept: */*
Proxy-Connection: Keep-Alive

当我用我的 Perl 脚本尝试这样做时:

#!/usr/bin/perl

use LWP::UserAgent;
use warnings;

# forbidden URL
$forbidden_url = URI->new( 'http://www.some_adult_site.com/' );

# user agent to use a proxy
$user_agent = LWP::UserAgent->new;
$user_agent->proxy( 'http', 'http://our_proxy:port/' );

# request
$req = HTTP::Request->new( GET => $forbidden_url );

# response
$res = $user_agent->request( $req );

print $res->content;

我收到一个 404 not found 页面,其中包含以下 TCP 流

GET http://www.some_adult_site.com/ HTTP/1.1
Host: www.some_adult_site.com
User-Agent: libwww-perl/6.05

对于为什么这不起作用,您有什么建议吗?

最佳答案

代理或站点可能会拒绝某些用户代理。在发出请求之前尝试将代理设置为 curl(你知道它可以工作):

$user_agent->agent('curl/7.35.0');

关于perl - 使用 curl 和 perl 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27480660/

相关文章:

python - pycurl;连接后从代理收到 HTTP 代码 400

c++ - 如何在 Windows 上实现端口重定向/映射?

c++ - 如何从 TCP 连接获取正确的 MAC 地址?

perl - 强制 Perl 在 32 位模式下工作

c - 当我的 Perl 程序在 cmd.exe 中输出 UTF-8 编码的字符串时,为什么我会重复最后一个八位字节?

mysql - 使用 Class::DBI 和带连字符的表名

python - 请求模块抛出 OpenSSL.SSL.Error

c++ - 在 C++ 中使用 cURL 的 JSON 请求

regex - 什么正则表达式可以匹配相同字符的序列?

c-tcp-网络图 : could tun/tap interface neglict the use of netmap?