我试图使用Python的请求获取受密码保护的ASP站点的全部内容。在
ASP站点的程序员告诉我,使用PowerShell,他可以使用以下脚本获取数据:
$c = $host.UI.PromptForCredential('Your Credentials', 'Enter Credentials','','')
$r = Invoke-WebRequest 'https://server.com/app/login.aspx' -SessionVariable my_session
$form = $r.Forms[0]
$form.fields['xUsername']=$c.UserName
$form.fields['xPassword']=$c.GetNetworkCredential().Password
$r = Invoke-WebRequest -Uri ("https://server.com/app/login.aspx?ReturnUrl=%2Fapp%2FgetData.aspx%3Ftype%3DGETDATA%26id%3D123") -WebSession $my_session -Method POST -Body $form.Fields
我试图使用python的请求库来实现这一点,但似乎不能正常工作。我得到的不是数据,而是您在没有密码的情况下通常会看到的HTML代码。在
^{pr2}$我做错什么了?在
我发现了以下问题:
在“Form data”下找到的所有数据都必须包含在python请求中。再次,进入Chrome并正常登录网站。@Chrome:检查>网络>搜索登录.asp>;在底部,我找到了“formdata”,在我的例子中,它看起来像这样(在解析视图上):
事件目标:
事件参数:
在__视图状态:随机长字符串
查看状态生成器:随机十六进制数量
事件验证:随机长字符串
在xUsername:用户在
在xPassword:密码在
在btnLogin:登录
因此,正确的python代码如下所示:
我必须以编码形式包含url,否则我将从服务器收到一条错误消息,指出缺少一个参数,即:
^{pr2}$也许有人知道一个更好的方法,不用解码网址。在
相关问题 更多 >
编程相关推荐