登录到网站并从页面获取html

Login into a website and get html from a page

本文关键字:获取 html 网站 登录      更新时间:2023-09-26

我有点困惑,我读了很多关于我的问题的文章,但没有找到答案。我必须登录到一个网站,并从登录后才能访问的页面中获取一些HTML。我过去在Visual Basic中使用IE Object并像脚本一样操作,但这给我带来了很多问题,主要是因为它太慢了。

我的网站很容易访问,只需使用像<url>/j_security_check?j_username=username&j_password=pass这样的POST请求我不知道的是如何检查我是否登录,如何使用创建的会话到达页面,以及如何获取HTML(主要由JavaScript生成)

我以前从未创建过登录表单,也不知道会话是如何工作的。我还不清楚头需要什么,以及服务器给出的请求和响应代表什么。

如果有人能为我指明学习这些概念的正确方向,我将不胜感激。

SESSIONS视为服务器内存中的变量。它们作为cookie存储在用户的计算机上。这里有两个简短但有用的解释:这里和这里

下面是一个PHP登录系统的简化代码示例。当登录成功或失败时,您可以(a)将用户重定向到安全页面,或者(b)将用户返回到公共页面重试。在PHP代码中,可以使用headers()方法重定向它们,也可以使用带有window.location.href="webpage.html";的javascript重定向它们。上面的例子使用了js方法,还演示了如何保护网页,使某些网页成为insidepublic

选择PHP方法还是javascript方法(重定向到不同的页面)取决于如何处理用户的登录/密码。如果你使用HTML表单,它们的工作方式是将数据发布到第二个页面——实际上是导航到另一个页面——处理数据并对其进行处理。这一切都可以在PHP中发生。

目前最常见的方法是保持在同一个页面上(而不是离开它),只将数据发送到第二个PHP页面。该页面接收用户数据(id/pw),将这些凭据与您存储在数据库中的内容进行比较(甚至仅与该PHP文件中的变量进行比较),ECHOs对登录页面的响应。响应在success:函数中接收,然后使用javascript代码将用户重定向到内部页面。

将数据发送/接收到辅助PHP页面,同时保留在原始页面上称为AJAX。这很简单。以下是一些简单示例的简要概述。我敦促您将代码复制到服务器上,并使示例发挥作用——更改一些内容,看看每个示例是如何工作的。


请注意,有两种方法可以将数据从一个网页发送到另一个网页:GET和POST。最明显的区别是,GET方法通过将变量/值附加到URL来工作,正如您在问题中所显示的那样

<url>/j_security_check?j_username=username&j_password=pass

POST方法更隐蔽——您需要使用开发人员工具来查看数据——因此它是首选方法。

GET和POST起源于HTML表单,大多数人会立即将两者联系起来。在AJAX的现代,根本不需要<form>标签。事实上,如果您在AJAX中使用<form></form>结构,则必须抑制它们导航到辅助页面的默认操作:

<form id="myForm" action="anotherpage.php" method="GET">
</form>
$('#myForm').submit(function(event){
    event.preventDefault(); //suppress default form action
    //Do some stuff
    $.ajax({
        type: 'post', //this is where you now do the GET or POST
         url: 'my_secondary_file.php',
        data: 'varname=' + field_value_variable + '&nuthervar=' +nutherval,
        success: function(d){
            if (d == 'whatever you echo from php') window.location.href = 'my_secret_page.php'
        }
    });
});

会话是在服务器上创建的。一旦您点击了url(在本例中为<url>/j_security_check?j_username=username&j_password=pass),服务器就应该验证凭据,然后创建会话。您只能使用javascript来管理该会话,可能使用cookie,而不能创建会话。