身份验证类型

身份验证类型
anisha@linux-dopx:~> wget -c --no-check-certificate --user abc --password xyz https://www.smart-developer.com/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf

--2011-08-29 15:11:53--  https://www.smart-developer.com/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf
Resolving www.smart-developer.com... 80.237.227.161
Connecting to www.smart-developer.com|80.237.227.161|:443... connected.
WARNING: cannot verify www.smart-developer.com's certificate, issued by `/C=US/O=Thawte, Inc./OU=Domain Validated SSL/CN=Thawte DV SSL CA':
  Unable to locally verify the issuer's authority.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `SD_02.pdf'
    [   <=>                                                                   ] 19,286      10.4K/s   in 1.8s    
2011-08-29 15:12:00 (10.4 KB/s) - `SD_02.pdf' saved [19286]

下载的书以KB为单位(实际大小20 MB),打开时也显示错误,而直接通过Firefox下载则没有问题。

编辑1: 看来 shell 不能容忍用户名中包含@!

还要查看引号的位置。

向右滚动。

anisha@linux-dopx:~> wget -c https://[email protected]:[email protected]/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf
https://[email protected]:[email protected]/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf: Bad port number.

anisha@linux-dopx:~> wget -c https://'[email protected]':[email protected]/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf
https://[email protected]:[email protected]/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf: Bad port number.

anisha@linux-dopx:~> wget -c https://'[email protected]:abc'@www.smart-developer.com/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf
https://[email protected]:[email protected]/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf: Bad port number.

anisha@linux-dopx:~> wget -c https://x.y.z:[email protected]/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf
--2011-08-29 16:01:38--  https://x.y.z:*password*@www.smart-developer.com/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf
Resolving www.smart-developer.com... 80.237.227.161
Connecting to www.smart-developer.com|80.237.227.161|:443... connected.
ERROR: cannot verify www.smart-developer.com's certificate, issued by `/C=US/O=Thawte, Inc./OU=Domain Validated SSL/CN=Thawte DV SSL CA':
  Unable to locally verify the issuer's authority.
To connect to www.smart-developer.com insecurely, use `--no-check-certificate'.
Unable to establish SSL connection.
anisha@linux-dopx:~/Desktop>

答案1

身份验证类型

HTTP 本身支持身份验证,这就是您所使用的。然而,本机 HTTP 身份验证很少使用。 HTTP 还允许将表单数据发送到服务器;大多数网站(包括您尝试使用的网站)都使用这种基于表单的身份验证而不是 HTTP 身份验证,因为它更加用户友好且可自定义。

表单身份验证的工作原理

当 HTTP 客户端从 HTTP 服务器请求资源时,会在 HTTP 标头中发送大量数据。基于表单的身份验证的重要部分是 cookie。 cookie 只是一组键=值对的名称。可以在 HTTP 请求中发送多个 cookie。

当对受限资源的请求到来时,服务器将在会话 cookie 中查找特定的身份验证令牌。如果不存在,则表示客户端尚未登录,因此返回登录表单而不是请求的资源。如果token确实存在并且有效,则说明客户端已经登录,服务器将返回所请求的资源。

那么,我们如何获取该特殊身份验证令牌,以及如何发送它?我们通过提交包含有效数据的登录表单来获取它。一旦服务器验证了客户端的身份,它就会在 HTTP 标头中发回一个 cookie。我们需要保存该 cookie 并将其与所有未来请求一起传递。

黄铜钉

信息收集

查看登录页面的源代码。您已经使用 wget 下载了它,只需在文本编辑器中打开它即可。<form...>在源码中寻找。一般来说,可能有好几个,您可能必须弄清楚哪一个是用于提交登录数据的。在您现在使用的表格中,只有一种表格。接下来查找所有<input...>标签。这些数据将作为表单数据的一部分提交。特别令人感兴趣的是这name=...部分。这是钥匙key=value 对的一部分,您填写的内容就是价值部分。

您正在使用的页面具有以下字段LoginPasswordAdminSiteaccessURILoginButtonRedirectURI。这</form>是表格的结尾 - 您无需再看下去。我们需要提交具有适当值的所有这些键。某些值由您填写 - 包括LoginPassword,其他值您可以采用字段中已存在的值。如果您查看RedirectURI,您会发现它有一个value=属性,该属性是服务器在您最初请求的实际资源的 URI 中填写的。

还有一个关键信息:我们在哪里以及如何提交数据?这可以在<form...>标签中找到。它将有一个方法和一个动作。该操作没有完整的 URL;它有一个相对于基础的 URL,但您需要完整的 URL,因此将基础添加到相对 URL。该操作是要提交到的 URL,该操作可让您知道它是 POST 还是 GET 请求。您正在使用的页面需要通过 POST 方法提交的数据。

提交登录数据

现在我们知道要提交什么,我们需要实际去做。我们可以用wget这个。如果您查看手册页,您会找到一个--post-data=string选项;它向您展示了如何格式化它:key1=value1&key2=value2...。它只是每对的 key=value,由 . 连接起来&。这不是我们需要的唯一选择。

还记得身份验证令牌吗?服务器会将其作为响应的一部分发送回来,我们需要保存它。再次查看“cookie”的手册页,您将看到几个重要的选项。--save-cookies file--keep-session-cookies

使用这些选项构建命令行并执行它,请记住您要提交的 URL 不是您最初想要获取的资源 - 您需要提交到属性指向的 URL <form action=...>。您最终应该将会话 cookie 保存在文件中,并且可能(如果 wget 成功遵循 HTTP 重定向)将 PDF 文件作为输出。如果它没有获得 PDF 文件,您只需提交另一个请求(这次没有任何--post-data),但这一次,请包含您在使用“--load-cookies file”之前保存的 cookie。

应该这样做!

相关内容