标签: lwp-useragent

如何使用LWP发出HTTP PUT请求?

我正在尝试将此请求更改为HTTP PUT请求,任何想法如何?

my $request = LWP::UserAgent->new; 
my $response = 
        $request->get($url, "apikey", $apiKey, "requestDate", $requestDate);
Run Code Online (Sandbox Code Playgroud)

perl http perl-module lwp-useragent

6
推荐指数
1
解决办法
8849
查看次数

为什么我不能将ip分配给LWP :: UserAgent?

我有一个脚本应该能够对具有不同IP地址的服务进行一些调用.当我没有为我的调用设置任何ip时,我的代码工作,我写了一个函数来在调用之前为对象分配IP,但它返回一个错误:

Can't locate object method "local_address" via package "LWP::UserAgent"
Run Code Online (Sandbox Code Playgroud)

这是我的功能结构:

#!/usr/bin/perl -w

use LWP::UserAgent;
use HTTP::Headers;
use HTTP::Request::Common;
use HTTP::Cookies;
use URI::Escape;
use HTML::LinkExtor;

# set user agent object values
my $ua = new LWP::UserAgent;
$ua->agent('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6');
push @{ $ua->requests_redirectable }, 'POST';
$ua->cookie_jar({});


sub set_caller_ip {
    my($set_ip_address) = @_;

    $ua->local_address("$set_ip_address");
    return 1;
}


sub test_caller_ip {

    my $req = new HTTP::Request('GET', 'http://whatismyip.org/');
    $req->headers->push_header('Connection','Keep-Alive');
    $req->headers->push_header('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8');
    my $res = $ua->request($req) or die "$!";

    return …
Run Code Online (Sandbox Code Playgroud)

ip perl lwp-useragent

6
推荐指数
1
解决办法
1292
查看次数

通过Perl中的Way2sms自动发送短信

我正在尝试使用Perl LWP通过Way2sms发送短信.登录部分成功,之后我将cookie保存到本地文件.登录后的欢迎页面显示发送短信链接,点击哪一个被重定向到另一个页面,其中有两个用于移动号码和短信文本的输入以及一个用于提交和发送短信的按钮.Firebug显示页面结构,如图所示.从Iframe网址和表单的action属性,我构造了表单操作的绝对URL并相应地提交表单,并将cookie存储在文件中.但是,短信不会被发送.我在这做错了什么?代码如下.(name两个文本输入的属性是正确的,通过观察Firebug中的源代码来获取,尽管图像中未包含该代码)

use LWP::UserAgent;
open f, "> way2sms.txt";
use HTTP::Cookies;
my $cookie_jar = HTTP::Cookies->new(
file => "cookies.txt",
autosave => 1,
);

my $ua = LWP::UserAgent->new(
    agent =>
      'Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1',
    cookie_jar => $cookie_jar,
);
my $response = $ua->post(
    'http://site2.way2sms.com/contentt/bar/Login1.action',
    {
        username => $user,
        password => $pass,
    }
);

if ( $response->is_redirect ) {
    $response = $ua->get( $response->header('Location') );
    print 5 if $response->decoded_content =~ /Kaustav Mukherjee/i; #prints it, showing that the …
Run Code Online (Sandbox Code Playgroud)

perl lwp lwp-useragent way2sms

6
推荐指数
1
解决办法
4317
查看次数

我无法使用LWP :: UserAgent连接到任何HTTPS站点

我正在尝试创建一个只是连接到网站的脚本.但是,由于某种原因,它不会连接到任何使用HTTPS的东西.

我们在这里启用了代理.但是,我认为代理不是问题,因为如果我连接到网络内部没有隧道通过代理的HTTPS,它仍然会失败.

如果我在任何不使用HTTPS的站点上运行此程序,我可以通过并且脚本按预期工作.

我想知道的是通过阻止脚本连接到任何SSL安全站点可以实现的功能.

这是我写的代码:

$ENV{HTTPS_DEBUG} = 1;

my $ua = LWP::UserAgent->new( keep_alive => 1);
$ua->agent('Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36');
my $pac = HTTP::ProxyPAC->new( URI->new("http://pacfilelocation:8080/pac_file.pac") );
my $res = $pac->find_proxy("https://www.google.com");


if ($res->direct) {
    print "No Proxy Needed\n";
} elsif ($res->proxy) {
    print "Proxy: " . $res->proxy . "\n";
    $ENV{HTTPS_PROXY} = $res->proxy;
    $ENV{HTTP_PROXY} = $res->proxy;
    $ua->env_proxy;
}

my $req = new HTTP::Request('GET', 'https://www.google.com/');
$req->header('Accept' => 'text/html');
$req->header('Host', 'www.google.com');

my $res2 = $ua->request($req);

if ( $res2->is_success …
Run Code Online (Sandbox Code Playgroud)

perl ssl https lwp lwp-useragent

6
推荐指数
1
解决办法
1793
查看次数

LWP :: UserAgent无法使用TLS1.1发布

获得500个握手错误:443超过https.我发送XML的主机服务不支持TLS 1.2,它们支持1.0和1.1.目前在CentOS 6上使用LWP 6.03.使用下面的代码,他们声称我仍在使用TLS1.2发送

use LWP::UserAgent;
$ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0,SSL_version => 'SSLv23:!TLSv12' });
$req = HTTP::Request->new(GET => 'https://secure-host-server');

$res = $ua->request($req);
if ($res->is_success) {
  print $res->content;
  } else {
  print "Error: " . $res->status_line . "\n";
  }
Run Code Online (Sandbox Code Playgroud)

是否可以在发送给主机时打印TLS版本?我能做些什么来验证我使用的是TLS1.1?

perl ssl lwp lwp-useragent

5
推荐指数
1
解决办法
6308
查看次数

Perl LWP :: UserAgent无法连接到HTTPS

我有一个脚本,用于从Google获取内容。它工作得很好,但是现在不行了。我在stackexchange上找到了一个帖子,并且升级了库版本,但仍然无法正常工作:我无法使用LWP :: UserAgent连接到任何HTTPS站点

我可以通过linux计算机进行连接(telnet googleapis.com 443可以很好地运行)。

#!/usr/bin/perl


use CGI 'param';
use CGI::Carp 'fatalsToBrowser';
use DBI;
    require LWP::UserAgent;
    use LWP::Protocol::https;
    use URI::Escape;
    $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
    $access_token='xxx';
    print "LWP::UserAgent: ".LWP::UserAgent->VERSION,"\n";
    print "LWP::Protocol::https: ".LWP::Protocol::https->VERSION,"\n";
    $url="https://www.googleapis.com/oauth2/v1/userinfo?access_token=$access_token";
        my $ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0 });
$ua->agent('Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36');
        $ua->timeout(10);
        $ua->env_proxy;
        my $response = $ua->get("$url");
        if ($response->is_success) {
        print "Am adus cu succes contul de la google";
            $text=$response->decoded_content;  # or whatever
        }
        else {
            print …
Run Code Online (Sandbox Code Playgroud)

perl ssl https google-api lwp-useragent

5
推荐指数
1
解决办法
2963
查看次数

如何使用LWP :: UserAgent接受自签名证书

我正在尝试设置使用HTTPS的node.js服务器.然后,我将在Perl中编写一个脚本,向服务器发出HTTPS请求,并测量往返的延迟.

这是我的node.js:

var express = require('express');
var https = require('https');
var fs = require('fs');

var key = fs.readFileSync('encrypt/rootCA.key');
var cert = fs.readFileSync('encrypt/rootCA.pem');

// This line is from the Node.js HTTPS documentation.
var options = {
  key: key,
  cert: cert
};

https.createServer(options, function (req, res) {
    res.writeHead(200);
    res.end("hello world - https\n");
}).listen(8088);
Run Code Online (Sandbox Code Playgroud)

密钥/证书生成如下:

openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
Run Code Online (Sandbox Code Playgroud)

这是我的Perl脚本:

#!/usr/bin/perl
use LWP::UserAgent;


my $ua = LWP::UserAgent->new;
my $req = …
Run Code Online (Sandbox Code Playgroud)

perl https networking lwp-useragent node.js

5
推荐指数
2
解决办法
1184
查看次数

保存内容时LWP :: UserAgent内存使用情况

编辑:下面的问题是在AWS ec2微实例上的库存Perl 5.16.3上生成的.它最终通过安装和切换到Perl 5.24.3来解决perlbrew.


LWP::UserAgent 保存内容时,似乎会导致某种内存泄漏.

use v5.10;
use strict;
use warnings;

use IO::Socket::SSL;
use LWP::UserAgent;
use Memory::Usage;
use Time::HiRes 'usleep';

my $ua = LWP::UserAgent->new;
my $mu = Memory::Usage->new;
$ua->ssl_opts(SSL_ocsp_mode => SSL_OCSP_NO_STAPLE); ## disable OCSP stapling
for (1..50) {
    $mu->record("before request: $_");
    $ua->get('http://www.wikipedia.org/wiki/Special:Random', ':content_file' => 'temp.html');
    usleep 50000;
}

$mu->dump();
Run Code Online (Sandbox Code Playgroud)

输出:

  time    vsz (  diff)    rss (  diff) shared (  diff)   code (  diff)   data (  diff)
     0  213964 ( 213964)  25112 ( 25112)   7532 (  7532)      8 …
Run Code Online (Sandbox Code Playgroud)

perl lwp-useragent

5
推荐指数
1
解决办法
158
查看次数

Perl UTF8编码错误.LWP :: UserAgent-> decoding_content或Encode :: decode都不起作用.其他想法?

当我尝试使用LWP :: Useragent和Encode进行字符编码从网页中撤回全局地址时,我在perl中有编码问题.我试过谷歌搜索解决方案,但似乎没有任何工作.我正在使用Strawberry Perl 5.12.3.

以美国驻捷克共和国大使馆的地址页为例(http://prague.usembassy.gov/contact.html).我想要的只是撤回地址:

地址:Tržiště15118 01 Praha 1 - MaláStrana捷克共和国

哪个firefox使用字符编码UTF-8正确显示,UTF-8与网页标题字符集相同.但是当我尝试使用perl将其拉回并将其写入文件时,尽管在Useragent或Encode :: decode中使用了decoding_content,编码看起来仍然搞砸了.

我已经尝试在数据上使用正则表达式来检查错误是不是在打印数据时(即内部在perl中正确)但错误似乎在于perl如何处理编码.

这是我的代码:

#!/usr/bin/perl

require Encode;
require LWP::UserAgent;
use utf8;

my $ua = LWP::UserAgent->new;
$ua->timeout(30);
$ua->env_proxy;

my $output_file;
$output_file = "C:/Documents and Settings/ian/Desktop/utf8test.txt";
open (OUTPUTFILE, ">$output_file") or die("Could not open output file $output_file: $!" );
binmode OUTPUTFILE, ":utf8";
binmode STDOUT, ":utf8";

# US embassy in Czech Republic webpage
$url = "http://prague.usembassy.gov/contact.html";

$ua_response = $ua->get($url);
if (!$ua_response->is_success) { die "Couldn't get data from $url";}

print 'CONTENT TYPE: …
Run Code Online (Sandbox Code Playgroud)

perl decode utf-8 character-encoding lwp-useragent

4
推荐指数
1
解决办法
2271
查看次数

处理在 Perl 中共享公共“祖先”的模块的多重继承的正确方法是什么?

(当然,Moose/Moo 的答案是“角色”。这个问题是关于一般情况,假设没有 Moose/Moo,你想要组合两个模块,它们都是同一个父类的子类。)

让我们举一个稍微做作的例子:模块LWP::UserAgent::DeterminedLWP::RobotUA都是它的子类,LWP::UserAgent并以不同的方式扩展它。如果我想创建一个结合了两者方法的对象,我该怎么办?它的核心仍然是一个LWP::UserAgent对象,另外两个模块不会相互冲突,所以应该很容易,对吧?

据我所知,正确的做法是创建一个新包,将另外两个包声明为父包use parent qw(LWP::RobotUA LWP::UserAgent::Determined)——然后从中创建对象。事实上,如果你这样做,你会得到一个对象,其中包含来自两者的方法,以及来自基类的方法LWP::UserAgent几乎所有的东西都像你期望的那样工作。

但不完全是。双方LWP::UserAgent::DeterminedLWP::RobotUA有当,如果没有其他的值被赋予创建对象设置某些属性的默认值。将两者结合起来时,LWP::RobotUA会设置 的默认值,但不会 设置LWP::UserAgent::Determined。所以一定是出了什么问题。

下面是一些测试代码:

#!/usr/bin/env perl

use strict;
use warnings;
use 5.016;

use LWP::RobotUA;
use LWP::UserAgent::Determined;

package MyUA;
use parent qw(LWP::RobotUA LWP::UserAgent::Determined);

for my $module (qw(LWP::RobotUA LWP::UserAgent::Determined MyUA)) {
    say '# ', $module, ' #';
    my $ua = $module->new(
                          'agent' => 'Test-UA',
                          'from'  => 'example@example.com',
                         );
    my $req = …
Run Code Online (Sandbox Code Playgroud)

oop perl lwp-useragent

4
推荐指数
1
解决办法
102
查看次数