gpt4 book ai didi

perl - 带有 HTML::TreeBuilder 的用户代理字符串

转载 作者:行者123 更新时间:2023-12-02 02:27:44 26 4
gpt4 key购买 nike

我正在使用HTML::TreeBuilder->new_from_url($url) ,但由于 用户代理 字符串不兼容,服务器阻止了我。如何使用 HTML::TreeBuilder 更改用户代理字符串使用new_from_url($url)直接直接,而不需要通过传统方式获取网页内容的解决方法?

最佳答案

无法在 new_from_url() 中进行设置。您必须自己加载LWP::UserAgent并设置用户代理字符串。然后您可以使用 new_from_content() 解析内容。

但是,这里有一个指向 new_from_url 的直接链接代码。您可以使用它作为您自己的 new() 方法的基础,以便您的程序流程将以相同的方式读取。

所以类似:

sub HTML::TreeBuilder::my_new_from_url {
# copy and augment new_from_url
...
}

my $tree = HTML::TreeBuilder->my_new_from_url($url, { useragent => "foo" });

现在,尽管有所有这些正确的方法,您仍然可以通过重写其私有(private) _agent 方法来对 LWP::UserAgent 玩弄肮脏的把戏。存储默认的用户代理字符串。但请注意,您已使保修失效,并且所有损坏的模块行为均由您承担。

#the original 
sub _agent { "libwww-perl/$VERSION" }

在代码中定义:

use LWP::UserAgent ();
sub LWP::UserAgent::_agent { "Mozilla forever" }

或者,更狡猾的是:

use LWP::UserAgent ();

my $tree = do {
local *LWP::UserAgent::_agent = sub { "Mozilla forever" };
HTML::TreeBuilder->new_from_url($url);

};

关于perl - 带有 HTML::TreeBuilder 的用户代理字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65401329/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com