■ Contents
xii
The Dance of Forms and HTTP Methods �����������������������������������������������������������������������������������197
When Forms Use Wrong Methods���������������������������������������������������������������������������������������������������������������������� 199
Safe and Unsafe Cookies ����������������������������������������������������������������������������������������������������������������������������������� 199
Nonpersistent Cross-Site Scripting ������������������������������������������������������������������������������������������������������������������� 201
Persistent Cross-Site Scripting �������������������������������������������������������������������������������������������������������������������������� 203
Cross-Site Request Forgery ������������������������������������������������������������������������������������������������������������������������������� 203
The Improved Application ���������������������������������������������������������������������������������������������������������������������������������� 204
The Payments Application in Django �����������������������������������������������������������������������������������������206
Choosing a Web Framework ������������������������������������������������������������������������������������������������������210
WebSockets �������������������������������������������������������������������������������������������������������������������������������211
Web Scraping ����������������������������������������������������������������������������������������������������������������������������212
Fetching Pages �������������������������������������������������������������������������������������������������������������������������������������������������� 213
Scraping Pages �������������������������������������������������������������������������������������������������������������������������������������������������� 216
Recursive Scraping �������������������������������������������������������������������������������������������������������������������������������������������� 218
Summary ����������������������������������������������������������������������������������������������������������������������������������� 222
■ Chapter 12: Building and Parsing E-Mail ����������������������������������������������������������������������223
E-Mail Message Format ������������������������������������������������������������������������������������������������������������223
Building an E-Mail Message ������������������������������������������������������������������������������������������������������225
Adding HTML and Multimedia ���������������������������������������������������������������������������������������������������227
Adding Content ��������������������������������������������������������������������������������������������������������������������������232
Parsing E-Mail Messages ����������������������������������������������������������������������������������������������������������233
Walking MIME Parts ������������������������������������������������������������������������������������������������������������������235
Header Encodings ���������������������������������������������������������������������������������������������������������������������237
Parsing Dates ����������������������������������������������������������������������������������������������������������������������������239
Summary ����������������������������������������������������������������������������������������������������������������������������������� 239
■ Chapter 13: SMTP ����������������������������������������������������������������������������������������������������������241
E-mail Clients vs� Webmail Services ����������������������������������������������������������������������������������������� 241
In the Beginning Was the Command Line ���������������������������������������������������������������������������������������������������������� 241
The Rise of Clients ��������������������������������������������������������������������������������������������������������������������������������������������� 242
The Move to Webmail ���������������������������������������������������������������������������������������������������������������������������������������� 243