问题标签 [lwp-useragent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - 如何使用 LWP 发出 HTTP PUT 请求?
我正在尝试将此请求更改为 HTTP PUT 请求,知道怎么做吗?
json - 尝试使用 LWP::UserAgent 从 http://www.firstgiving.com 抓取 JSON 数据
正如你们中的一些人可能听说的那样,目前有几个 subreddit 正在开展慈善活动,尤其是 r/atheism。为了帮助/鼓励筹款,我开始编写一个小的网络实用程序来提供有关这些捐赠的实时信息(基本上,将 Reddit 的数据与 FirstGiving 的数据混合在一起)——你可以看到我到目前为止所拥有的在这里——它只显示了每个 subreddit 的总数和平均数字,它是非常初步的(也不是很漂亮。)
我想添加的功能是 FirstGiving 似乎没有提供的功能,即搜索或链接到特定捐赠的能力。上周有很多帖子试图提供捐赠匹配和类似的帖子,但也有很多虚假/巨魔帖子,没有很好的方法来验证某人是否“交付”(我们都知道截图很容易伪造的。)我计划缓存来自 FirstGiving 的数据,以允许某人链接到
检查 FirstGiving 页面后,似乎有一个未记录的 JSON API 调用(用于滚动到页面底部以显示更多捐款),它将以 HTML 表格的形式返回捐款金额、消息和昵称的列表。根据 Opera Dragonfly 的说法,这是我在浏览器 (Opera) 中访问它时的样子:
请求详情
身体
(剪断了响应正文的其余部分。此外,通常还有更多的 cookie,但我手动删除了除 aspsession id 之外的所有内容,并且它工作正常,因此它们似乎与除分析等之外的任何内容无关)
但是,当我尝试从 perl 脚本做同样的事情时,我没有得到这个有用的输出。这是我的脚本:
这是输出:
如果我启用该行push @{ $ua->requests_redirectable }, 'POST';
(即允许 POST 重定向),它会重定向到404 错误页面
如果这是 FirstGiving 有意将非人类客户拒之门外的尝试,我当然会放弃,但他们的 robots.txt 似乎并没有禁止我正在做的事情。
perl - 为什么我使用 Perl 获取的 HTML 看起来与我在浏览器中看到的不同?
我正在使用 Perl 编写一个 Web 抓取器以从http://www.coupons.com/获取数据 问题是我使用 LWP::UserAgent 获取的 HTML 与我在 Web 浏览器中看到的不同。我对 JavaScript 变量“CouponClubMember”的内容感兴趣,而在我使用 Perl 收到的 HTML 中,这个变量是空的。
有任何想法吗?
perl - Perl JSON::RPC::Client 使用 LWP::Agent
我被要求不使用 JSON::RPC::Client,而是使用 LWP 进行调用。
这是我的代码:
服务器:
模块:
工作客户:
非工作客户:
我看到两个客户端的服务器进程,但第二个客户端没有返回数据。
有人看到我错过了什么吗?它应该很简单,但由于某种原因,我找不到像 RPC::Client 看到的响应字符串。
perl - 将 Perl LWP::UserAgent 与需要用户名和密码才能连接的 XML 一起使用
好的...我正在尝试将 XML 页面发布到战略合作伙伴的站点,以便他们进行一些计算并再次通过 XML 向我返回响应代码。
我正在使用花园品种 PERL,并试图使用 LWP::UserAgent 来做到这一点......如果有更优雅的方式,请指出我的方向。
我可以访问他们的服务器,并取回代码......但它拒绝访问他们的服务器,因为它期望的用户名和密码不正确。实际的 XML 代码中没有指定用户名和密码,它应该作为实际 POST 方法的一部分传递给服务器......但我不知道该怎么做。
合作伙伴给出以下反馈:
用他生成的 xml 和他的用户名/密码组合替换 YOUR_XML_FILE、YOUR_USER 和 YOUR_PASSWORD。这应该从他有他的 perl 脚本的服务器上完成。
wget --no-check-certificate --post-file YOUR_XML_FILE https://previewtest.clverify.com/webservice/exec -O previewsamplerequest.response.xml --http-user=YOUR_USER --http-password=YOUR_PASSWORD
我不知道这应该在哪里生成,或者 LWP::UserAgent 中的选项是什么来指定它们。以前有人做过吗?
这是我的代码:
xml - LWP::UserAgent 将 XML 发布到安全服务器...证书问题
我正在使用 LWP::UserAgent 将 XML 数据 POST 到远程服务器。远程 URL 是 https,他们向我发送了一个 .crt 文件以安装在我的服务器上。
当我尝试连接到他们的服务器时,我收到以下消息:
发生错误
500 无法连接到 previewtest.clverify.com:443(证书验证失败) 500 无法连接到 previewtest.clverify.com:443(证书验证失败) 内容类型:文本/纯文本客户端日期:星期三,25 2012 年 1 月 05:11:24 GMT 客户端警告:内部响应无法连接到 previewtest.clverify.com:443(证书验证失败) LWP::Protocol::https::Socket: SSL 连接尝试失败,出现未知错误错误: 14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证在 /usr/lib/perl5/site_perl/5.8.8/LWP/Protocol/http.pm 第 51 行失败。
如何正确引用我服务器上的 SSL 证书并将其发送给他们?
这是代码:
现在...假设发送给我的证书位于/usr/bin/some_dir/DigiCertCA.crt。
如何设置它以在调用服务器时检查我的证书?
xml - 用于 HTTPS 服务器的 XML POST 的 LWP::UserAgent 不起作用
好的......让我们看看这是否更清楚。
我正在通过 LWP::UserAgent 将 XML 文档 POST 到远程第三方服务器。
他们之前通过 CPanel 和 Putty 命令行“定位”调用向我发送了我安装在服务器上的 .crt 文件,并验证了他们的地址以及它们存在的事实。证书在那里。
我确保我安装了 LWP::Protocol::https 和所有其他必要的 Perl 模块,包括 Mozilla::CA、Crypt::SSLeay 等。
当我运行脚本时,我收到以下错误:
发生错误
500 无法连接到 shortURL:端口(证书验证失败) 500 无法连接到 shortURL:端口(证书验证失败) 内容类型:文本/纯文本客户端日期:2012 年 1 月 25 日星期三 17:53:36 GMT客户端警告:内部响应无法连接到 shortURL:端口(证书验证失败) LWP::Protocol::https::Socket:SSL 连接尝试失败,出现未知错误错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败 / usr/lib/perl5/site_perl/5.8.8/LWP/Protocol/http.pm 第 51 行。
这是调用代码:
有什么想法吗?我在这里没有想法了。:(
perl - LWP 读取失败错误
我正在使用 LWP::UserAgent 做一个简单的 HTTP Post 并得到下面的错误。在网上搜索了很多之后,似乎有一段时间以前修复了一个错误。我的 6.03 版本应该是固定的。关于为什么会发生这种情况的任何想法?
这是代码示例:
perl - Parsing Site with Perl LWP::UserAgent -- Cookies Required
On a certain project in Perl, I've written several "parsers", which allow me to visit websites with LWP::UserAgent. However, I'm having a problem with one website: it's behaving exactly as if I had visited the site with my browser, having turned off Cookies, so instead of giving me the page I want, it gives me a page with the message that I must turn on cookies. The entire code of my script is below. Any ideas? Thanks in advance.
(Note that I looked at the following url, which seems to be addressing my question, but unfortunately, I was unable to get a working script based on its suggestion: Cookies in perl lwp.)
perl - 使 LWP::UserAgent HTTPS 超时工作
解决方案
正如@limulus 在我接受的答案中所报告的那样,这是Net::HTTPS
6.00 版中的一个错误。始终警惕新的 .0 版本。这是该模块的错误版本和固定版本之间的相关差异:
原始问题
相关性:看到您的 HTTPS 客户端无限期阻塞是很烦人的,因为连接端点不可靠。
这个实验很容易在家里设置和重播。您只需要两件东西,一个用于捕获传入客户端的 tarpit 和一个 Perl 脚本。可以使用以下方式设置 tarpit netcat
:
然后,将脚本指向这个 tarpit:
这是要做什么?好吧,连接到NetCat打开的端口,然后……挂掉。无限期。至少在开发人员时间方面。我的意思是它可能会在十分钟或两个小时后超时,但我没有检查过;指定的超时时间不生效,在Linux上不生效,在Windows上也不生效(Win32,还没有检查Cygwin)。
使用的版本:
现在为timeout
和Timeout
参数。前者是LWP::UA的参数名称,后者是IO::Socket::SSL的名称,通过LWP::Protocol::https使用。(顺便说一句,为什么 metacpan HTTPS?嗯,至少它不是一个 tarpit。)我不知何故希望让这些参数一起传递:)
正如您所知,keep_alive
与超时不起作用没有任何关系,我凭经验验证了这一点。:)
无论如何,在深入挖掘之前,有谁知道这里发生了什么以及如何使超时与 HTTPS 一起工作?很难相信我是第一个遇到这种情况的人。