20. Internet Protocols and Support ********************************** The modules described in this chapter implement Internet protocols and support for related technology. They are all implemented in Python. Most of these modules require the presence of the system-dependent module "socket", which is currently supported on most popular platforms. Here is an overview: * 20.1. "webbrowser" — Convenient Web-browser controller * 20.1.1. Browser Controller Objects * 20.2. "cgi" — Common Gateway Interface support * 20.2.1. Introduction * 20.2.2. Using the cgi module * 20.2.3. Higher Level Interface * 20.2.4. Old classes * 20.2.5. Functions * 20.2.6. Caring about security * 20.2.7. Installing your CGI script on a Unix system * 20.2.8. Testing your CGI script * 20.2.9. Debugging CGI scripts * 20.2.10. Common problems and solutions * 20.3. "cgitb" — Traceback manager for CGI scripts * 20.4. "wsgiref" — WSGI Utilities and Reference Implementation * 20.4.1. "wsgiref.util" – WSGI environment utilities * 20.4.2. "wsgiref.headers" – WSGI response header tools * 20.4.3. "wsgiref.simple_server" – a simple WSGI HTTP server * 20.4.4. "wsgiref.validate" — WSGI conformance checker * 20.4.5. "wsgiref.handlers" – server/gateway base classes * 20.4.6. Examples * 20.5. "urllib" — Open arbitrary resources by URL * 20.5.1. High-level interface * 20.5.2. Utility functions * 20.5.3. URL Opener objects * 20.5.4. "urllib" Restrictions * 20.5.5. Examples * 20.6. "urllib2" — extensible library for opening URLs * 20.6.1. Request Objects * 20.6.2. OpenerDirector Objects * 20.6.3. BaseHandler Objects * 20.6.4. HTTPRedirectHandler Objects * 20.6.5. HTTPCookieProcessor Objects * 20.6.6. ProxyHandler Objects * 20.6.7. HTTPPasswordMgr Objects * 20.6.8. AbstractBasicAuthHandler Objects * 20.6.9. HTTPBasicAuthHandler Objects * 20.6.10. ProxyBasicAuthHandler Objects * 20.6.11. AbstractDigestAuthHandler Objects * 20.6.12. HTTPDigestAuthHandler Objects * 20.6.13. ProxyDigestAuthHandler Objects * 20.6.14. HTTPHandler Objects * 20.6.15. HTTPSHandler Objects * 20.6.16. FileHandler Objects * 20.6.17. FTPHandler Objects * 20.6.18. CacheFTPHandler Objects * 20.6.19. UnknownHandler Objects * 20.6.20. HTTPErrorProcessor Objects * 20.6.21. Examples * 20.7. "httplib" — HTTP protocol client * 20.7.1. HTTPConnection Objects * 20.7.2. HTTPResponse Objects * 20.7.3. Examples * 20.8. "ftplib" — FTP protocol client * 20.8.1. FTP Objects * 20.8.2. FTP_TLS Objects * 20.9. "poplib" — POP3 protocol client * 20.9.1. POP3 Objects * 20.9.2. POP3 Example * 20.10. "imaplib" — IMAP4 protocol client * 20.10.1. IMAP4 Objects * 20.10.2. IMAP4 Example * 20.11. "nntplib" — NNTP protocol client * 20.11.1. NNTP Objects * 20.12. "smtplib" — SMTP protocol client * 20.12.1. SMTP Objects * 20.12.2. SMTP Example * 20.13. "smtpd" — SMTP Server * 20.13.1. SMTPServer Objects * 20.13.2. DebuggingServer Objects * 20.13.3. PureProxy Objects * 20.13.4. MailmanProxy Objects * 20.14. "telnetlib" — Telnet client * 20.14.1. Telnet Objects * 20.14.2. Telnet Example * 20.15. "uuid" — UUID objects according to RFC 4122 * 20.15.1. Example * 20.16. "urlparse" — Parse URLs into components * 20.16.1. Results of "urlparse()" and "urlsplit()" * 20.17. "SocketServer" — A framework for network servers * 20.17.1. Server Creation Notes * 20.17.2. Server Objects * 20.17.3. Request Handler Objects * 20.17.4. Examples * 20.17.4.1. "SocketServer.TCPServer" Example * 20.17.4.2. "SocketServer.UDPServer" Example * 20.17.4.3. Asynchronous Mixins * 20.18. "BaseHTTPServer" — Basic HTTP server * 20.18.1. More examples * 20.19. "SimpleHTTPServer" — Simple HTTP request handler * 20.20. "CGIHTTPServer" — CGI-capable HTTP request handler * 20.21. "cookielib" — Cookie handling for HTTP clients * 20.21.1. CookieJar and FileCookieJar Objects * 20.21.2. FileCookieJar subclasses and co-operation with web browsers * 20.21.3. CookiePolicy Objects * 20.21.4. DefaultCookiePolicy Objects * 20.21.5. Cookie Objects * 20.21.6. Examples * 20.22. "Cookie" — HTTP state management * 20.22.1. Cookie Objects * 20.22.2. Morsel Objects * 20.22.3. Example * 20.23. "xmlrpclib" — XML-RPC client access * 20.23.1. ServerProxy Objects * 20.23.2. Boolean Objects * 20.23.3. DateTime Objects * 20.23.4. Binary Objects * 20.23.5. Fault Objects * 20.23.6. ProtocolError Objects * 20.23.7. MultiCall Objects * 20.23.8. Convenience Functions * 20.23.9. Example of Client Usage * 20.23.10. Example of Client and Server Usage * 20.24. "SimpleXMLRPCServer" — Basic XML-RPC server * 20.24.1. SimpleXMLRPCServer Objects * 20.24.1.1. SimpleXMLRPCServer Example * 20.24.2. CGIXMLRPCRequestHandler * 20.25. "DocXMLRPCServer" — Self-documenting XML-RPC server * 20.25.1. DocXMLRPCServer Objects * 20.25.2. DocCGIXMLRPCRequestHandler