在 python 中使用套接字进行 HTTP 基本身份验证
如何通过 python 中的套接字使用基本的 http 身份验证连接到服务器。我不想使用 urllib/urllib2 等,因为我的程序执行一些低级套接字 I/O 操作
How to connect to a server using basic http auth thru sockets in python .I don't want to use urllib/urllib2 etc as my program does some low level socket I/O operations
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
最简单的开始可能是使用 makefile() 来获得一个更简单的类似于文件的套接字接口。
如果您需要解释返回的响应以挑选出 HTML 或需要身份验证的标头,并处理重定向、错误、传输编码等,那么您将需要做更多的工作。 HTTP 可能很复杂!您确定需要使用低级套接字吗?
Probably the easiest place to start is using
makefile()
to get a simpler file-like interface to the socket.You'll have to do a lot more work than that if you need to interpret the returned response to pick out the HTML or auth-required headers, and handle redirects, errors, transfer-encoding and all that right. HTTP can be complex! Are you sure you need to use a low-level socket?
例如查看 urllib 的 来源,特别是
http_error_401
函数(当然还有围绕它的调度):发出 HTTP 请求,监视 401 响应,提取其领域,检查其方案是否为basic
,使用该领域的用户和密码重试(参见同一源文件中的函数retry_http_basic_auth
)。当然有很多工作,但这就是根据您的需要进行“裸机”编程的代价。Look e.g. at urllib's sources, specifically the
http_error_401
function (and the dispatching around it of course): make the HTTP request, watch for a 401 response, extract its realm, check that its scheme isbasic
, try again with the user and password for that realm (cfr functionretry_http_basic_auth
in that same source file). Lots of work of course, but that's the price of programming "down to the bare metal" as you require.