+        endpoint = 'https://{}/{}/prelogin.esp'.format(args.server, ('global-protect' if args.portal else 'ssl-vpn'))
+        res = s.post(endpoint, verify=args.verify, data=args.extra)
+        xml = ET.fromstring(res.content)
+        sam = xml.find('saml-auth-method')
+        sr = xml.find('saml-request')
+        if sam is None or sr is None:
+            p.error("This does not appear to be a SAML prelogin response (<saml-auth-method> or <saml-request> tags missing)")
+        sam = sam.text
+        sr = a2b_base64(sr.text).decode()
+        if sam == 'POST':
+            html, uri = sr, None
+        elif sam == 'REDIRECT':
+            uri, html = sr, None
+        else:
+            p.error("Unknown SAML method (%s)" % sam)
+
+    # launch external browser for debugging
+    if args.external:
+        print("Got SAML %s, opening external browser for debugging..." % sam, file=stderr)
+        import webbrowser
+        if html:
+            uri = 'data:text/html;base64,' + b2a_base64(html.encode()).decode()
+        webbrowser.open(uri)
+        raise SystemExit