Oracle WWW::机械化以访问安全的网站

Oracle WWW::机械化以访问安全的网站,oracle,perl,Oracle,Perl,我有一个脚本,我正试图登录到一个Oracle EBS页面,我相信我离这样做只有一行了,(我可能错了)。下面是我的脚本,附件是数据部分,我想答案就在那里 我认为我失败的地方是提交和提交表单行。但如果有人发现其他差异,请告诉我。我确实看到了脚本中的用户名在表单中的位置,但没有看到密码。我确实相信脚本的条目是正确的,但是如果我错了,请纠正我 提前谢谢 use strict; use warnings; use WWW::Mechanize; use HTTP::Cookies; my $outfile

我有一个脚本,我正试图登录到一个Oracle EBS页面,我相信我离这样做只有一行了,(我可能错了)。下面是我的脚本,附件是数据部分,我想答案就在那里

我认为我失败的地方是提交和提交表单行。但如果有人发现其他差异,请告诉我。我确实看到了脚本中的用户名在表单中的位置,但没有看到密码。我确实相信脚本的条目是正确的,但是如果我错了,请纠正我

提前谢谢

use strict;
use warnings;
use WWW::Mechanize;
use HTTP::Cookies;
my $outfile = "test";
my $url = "http ://url_address:portnumber /OA_HTML/Login";
my $username = 'johndoe';
my $password = 'johndoe123';
my $mech = WWW::Mechanize->new();
$mech->cookie_jar(HTTP::Cookies->new());
$mech->get($url);
$mech->form_id('DefaultFormName');
$mech->field("usernameField", $username);
$mech->field("passwordField", $password);
$mech->submit_form(

form_id => "DefaultFormName",
fields => {
    usernameField => $username,
    passwordField => $password,
    '_FORM_SUBMIT_BUTTON' => "SubmitButtonofEPmL1A",
},
);
my $output_page = $mech->content();
print $output_page;
open(OUTFILE, ">$outfile");
binmode(OUTFILE, ":utf8");`enter code here`
print OUTFILE "$output_page";
close(OUTFILE); 
表格snipet:

"name="usernameField" size="0" type="text" value="johndoe">
< src="/OA_HTML/cabo/images/swan/t.gif" width="5"></td></tr><tr><td colspan="2"></td><td><span class="x2o">
(example: john.doe)</span></td></tr></table></td></tr><tr id="region41" align="left"><td id="region131" valign="top"><span class="x9g">*</span></td>
<td id="region51" valign="top"><span class="x9c">Password</span></td><td id="region61"><table id="passwordField__xc_" border="0" cellspacing="0" cellpadding="0"><tr><td align="right" nowrap></td><td></td>
<td valign="top" nowrap><input id="passwordField" title="Password" class=".LoginText" onchange="" name="passwordField" size="0" type="password">
< src="/OA_HTML/cabo/images/swan/t.gif" width="5"></td></tr><tr><td colspan="2"></td><td><span class="x2o">
(example: A1B2c3D4)</span></td></tr></table></td></tr><tr id="region132" align="left"><td id="region139">
</td><td id="region138"></td><td id="region133">
<button id="SubmitButton" title="Login" class="x7g" style="background-image:url(/OA_HTML/cabo/images/swan/btn-bg1.gif)" 
onclick="submitForm('DefaultFormName',1,{'_FORM_SUBMIT_BUTTON':'SubmitButtonofEPmL1A'});return false" type="submit">Login</button>< id="item11" src="/OA_HTML/cabo/images/swan/t.gif" width="2" height="1">"
“name=“usernameField”size=“0”type=“text”value=“johndoe”>

(示例:john.doe)*
密码

(示例:A1B2c3D4)
登录
WWW::Mechanize不处理JavaScript。如果涉及JavaScript(看起来是这样的,
onclick=“submitForm…”
),请使用其他模块(例如)。WWW::Mechanize不处理JavaScript。如果涉及JavaScript(看起来是这样的,
onclick=“submitForm…”
),请使用其他模块(例如)。

您不需要这行代码(
WWW::Mechanize
将自动为您处理cookie):

下一步…您确定您的链接中有此文本
提交表单
?您可能需要:

$mech->follow_link( url_regex => qr/submitForm/ );
我建议改为尝试此代码(对于提交部分):

更新:另一种方法:您需要使用Firefox的HTTPFox插件之类的工具,并在每次请求后找到发送到目标站点的数据。接下来,您只需使用
$mech
发送相同的数据,您不需要这行代码(
WWW::Mechanize
将自动处理cookies):

下一步…您确定您的链接中有此文本
提交表单
?您可能需要:

$mech->follow_link( url_regex => qr/submitForm/ );
我建议改为尝试此代码(对于提交部分):


更新:另一种方法:你需要使用像Firefox的HTTPFox插件这样的工具,并在每次请求后找到要发送到目标站点的数据。接下来,你只需使用
$mech

发送相同的数据。值得注意的是:mech不处理JavaScript是任何建议中的第一个问题,然后会发生什么?值得注意的是:这就是我ch不处理JavaScript是所有建议中的第一个问题,然后会是什么?感谢gangabass,我有一个类似的脚本,访问了一个类似的站点作为Oracle EBS URL,它工作得很好,所以我只是修改了信息以适应EBS站点,它似乎一直工作到提交的时候。所以在进行交叉阅读之后关于表单数据,我认为我遗漏了关于提交或单击的一两行。我将尝试你的建议谢谢!顺便说一句,你在我提供的表单数据中看到了任何线索吗?请参阅我的原始帖子,在那里我添加了你建议的行。似乎我们在输出文件中倒退了。我没有像以前那样在表单中看到用户名。比ks gangabass,我有一个类似的脚本,它访问了一个类似于Oracle EBS URL的站点,它工作得很好,所以我只是修改了信息以适应EBS站点,它似乎一直工作到提交的时候。所以在交叉阅读表单数据后,我认为我错过了关于提交或单击的一两行。我会试试你r建议谢谢!顺便说一句,你在我提供的表单数据中看到任何线索了吗?请看我的原始帖子,在那里我添加了你建议的行。似乎我们在输出文件中倒退了。我没有像以前那样在表单中看到用户名。
$mech->submit_form(

    form_id => "DefaultFormName",
    fields => {
        usernameField => $username,
        passwordField => $password,
        '_FORM_SUBMIT_BUTTON' => "SubmitButtonofEPmL1A",
    },
};