登录使用Microsoft ForeFront“威胁管理网关”的网站

时间:2013-02-22 09:20:19

标签: python authentication cookies

我想使用python登录使用Microsoft Forefront的网站,并检索内部网页的内容以进行处理。

我不是python的新手,但我没有使用任何URL库。 我检查了以下帖子:

我还尝试了一些模块,例如requests。我仍然无法理解应该怎么做,输入用户名/密码是否足够?或者我应该以某种方式使用cookie进行身份验证?任何示例代码都会非常感激。

这是我到目前为止的代码:

import requests

NAME = 'XXX'
PASSWORD = 'XXX'

URL = 'https://intra.xxx.se/CookieAuth.dll?GetLogon?curl=Z2F&reason=0&formdir=3'

def main():
    # Start a session so we can have persistant cookies
    session = requests.session()

    # This is the form data that the page sends when logging in
    login_data = {
        'username': NAME,
        'password': PASSWORD,
        'SubmitCreds': 'login',
    }

    # Authenticate
    r = session.post(URL, data=login_data)

    # Try accessing a page that requires you to be logged in
    r = session.get('https://intra.xxx.se/?t=1-2')
    print r

main()

但上面的代码在session.post - 行:

上产生以下异常
raise ConnectionError(e)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='intra.xxx.se', port=443): Max retries exceeded with url: /CookieAuth.dll?GetLogon?curl=Z2F&reason=0&formdir=3 (Caused by <class 'socket.error'>: [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond)

更新: 我注意到我提供了错误的用户名/密码。 一旦更新,我得到了上面代码的HTTP-200响应,但当我尝试访问任何内部站点时,我收到HTTP 401响应。为什么会这样?上面的代码有什么问题?我应该以某种方式使用cookie吗?

1 个答案:

答案 0 :(得分:0)

对于它阻止的连接类型,TMG可能非常挑剔。下一步是找出TMG阻止连接尝试的原因。

如果您有权访问TMG服务器,请登录它,启动TMG管理用户界面(我记不起它的名称),并查看来自您的IP地址的失败请求的日志。希望它能告诉你连接被拒绝的原因。

您似乎正在尝试通过Intranet连接到它。我看到它阻止连接的一种方法是,它是从它认为在其“内部”网络上的地址接收它们的。 (TMG有两个网络接口,因为它打算在两个网络之间使用:内部网络,其资源可以防御威胁;以及外部网络,可能来自威胁。)如果它在其外部网络接口上接收请求它似乎来自内部网络,它假定IP地址已被欺骗并阻止连接。但是,我不能确定是这种情况,因为我不知道这个TMG服务器的内部网络是什么设置的,也不知道你的机器的IP地址是否在这个内部网络上。