Sinisterly
Hacking Gmail Book - Printable Version

+- Sinisterly (https://sinister.li)
+-- Forum: Sharing (https://sinister.li/Forum-Sharing)
+--- Forum: eBooks (https://sinister.li/Forum-eBooks)
+--- Thread: Hacking Gmail Book (/Thread-Hacking-Gmail-Book)



Hacking Gmail Book - ZanGetsu - 09-10-2017

[Image: f28bf76702.png]

Code:
Part I: Starting to Use Gmail 1 Chapter 1: Desktop Integration . . . . . . . . . . . . . . . . . . . . . . . . 3 New Mail Notification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Linux, etc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Redirecting mailto: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Multiplatform/Mozilla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 GmailerXP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 And Now . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Chapter 2: Integrating Your Existing Mail . . . . . . . . . . . . . . . . . . 11 Importing Your Mail into Gmail . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Gmail Loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Setting Up Pop Access Inside Gmail . . . . . . . . . . . . . . . . . . . . . . . . . 12 Setting Up Pop Within an Application . . . . . . . . . . . . . . . . . . . . . . . . 13 IMAP for Gmail. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 And Now . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Chapter 3: Gmail Power Tips. . . . . . . . . . . . . . . . . . . . . . . . . 15 Keyboard Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Plus Addressing and Filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Other Addressing Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Quickly Mark a Group of E-Mails . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Send Executables as Attachments . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Advanced Searching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 And Now . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 02_59611x ftoc.qxp 11/28/05 11:05 PM Page xi Part II: Getting Inside Gmail 27 Chapter 4: Skinning Gmail . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Deconstructing Gmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 The Top Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 The Navigation Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 The Activity Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 The Bottom Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Applying a New Style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Creating Gmail Lite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Walking Through the Style Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Removing Google�??s Advertising . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 And Now . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Chapter 5: How Gmail Works . . . . . . . . . . . . . . . . . . . . . . . . 53 What the Devil Is Going On?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Preloading the Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Introducing XMLHttpRequest . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Using XMLHttpRequest Yourself . . . . . . . . . . . . . . . . . . . . . . . 55 Finding XMLHttpRequest within the Gmail code . . . . . . . . . . . . . . 61 Sniffing the Network Traffic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Firing Up Tcpflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Prodding Gmail to Hear It Squeak . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Preparing to Watch the Gmail Boot Sequence . . . . . . . . . . . . . . . . . 67 Cleaning Up the Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Stepping Through the Gmail Boot Sequence . . . . . . . . . . . . . . . . . . . . . 68 Logging In . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 The First Cookie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Loading the Inbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Reading an Individual Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 And Now . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Chapter 6: Gmail and Greasemonkey . . . . . . . . . . . . . . . . . . . . 91 What Is Greasemonkey?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 The Userscripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Displaying Bloglines Within Gmail . . . . . . . . . . . . . . . . . . . . . . 92 How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Add a Delete Button. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 GmailSecure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 MailtoComposeInGmail . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Other Userscripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Mark Read Button. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Multiple Signatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Hide Invites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Random Signatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 And Now . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 xii Contents 02_59611x ftoc.qxp 11/28/05 11:05 PM Page xii Chapter 7: Gmail Libraries . . . . . . . . . . . . . . . . . . . . . . . . . 117 PHP �?? Gmailer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Getting and Installing the Library. . . . . . . . . . . . . . . . . . . . . . . 118 How to Use It . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Perl �?? Mail::Webmail::Gmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Getting and Installing the Library. . . . . . . . . . . . . . . . . . . . . . . 127 Using the Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Python �?? Libgmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Getting and Installing the Library. . . . . . . . . . . . . . . . . . . . . . . 131 How to Use It . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Reading the First Message in the Inbox. . . . . . . . . . . . . . . . . . . . 134 Setting Yourselves Up for the Remaining Chapters . . . . . . . . . . . . . . . . . 135 And Now . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Chapter 8: Checking for Mail . . . . . . . . . . . . . . . . . . . . . . . . 137 The Basics in Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 The Basics in PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 The Basics in Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Building on the Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 New Mail Count in RSS . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 New Mail Count to AOL Instant Messenger . . . . . . . . . . . . . . . . . 144 And Now . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Chapter 9: Reading Mail . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Reading Mail with Perl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Accessing All the Data of a Message . . . . . . . . . . . . . . . . . . . . . 152 Listing the Mail and Displaying a Chosen Message . . . . . . . . . . . . . 153 Dealing with Attachments. . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Making an RSS Feed of Your Inbox . . . . . . . . . . . . . . . . . . . . . . 155 And Now . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Chapter 10: Sending Mail. . . . . . . . . . . . . . . . . . . . . . . . . . 161 Sending Mail with Gmail SMTP . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Sending Mail with Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 And Now . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 Part III: Conquering Gmail 167 Chapter 11: Dealing with Labels . . . . . . . . . . . . . . . . . . . . . . 169 Listing the Existing Labels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Setting New Labels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 Creating a New Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Removing Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 And Now . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Contents xiii 02_59611x ftoc.qxp 11/28/05 11:05 PM Page xiii Chapter 12: Addressing Addresses . . . . . . . . . . . . . . . . . . . . . 177 The Contacts List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Importing Contacts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Showing Your Current Contacts . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Exporting Contacts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 And Now . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Chapter 13: Building an API from the HTML-Only Version of Gmail . . . 183 A First Look at the HTML Version . . . . . . . . . . . . . . . . . . . . . . . . . 183 Introducing Basic Scraping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 HTML::TokeParser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Parsing the Inbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 Retrieving the Individual Page. . . . . . . . . . . . . . . . . . . . . . . . . 192 Dealing with Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Dealing with Other Folders . . . . . . . . . . . . . . . . . . . . . . . . . . 195 And Now . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Chapter 14: Exporting Your Mail . . . . . . . . . . . . . . . . . . . . . . 197 Exporting as a Massive Text File . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Converting to Mbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Appending to IMAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 And Now . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 Chapter 15: Using Gmail to . . . . . . . . . . . . . . . . . . . . . . . . . 203 Using Gmail as a To-Do List . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Using Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Using gmtodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 Using Gmail to Find Information in RSS Feeds. . . . . . . . . . . . . . . . . . . 205 Using Gmail to Find Torrent Files . . . . . . . . . . . . . . . . . . . . . . 206 Using Gmail as a Notepad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 Using Gmail as a Spam Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 An Even Simpler Way of Doing It . . . . . . . . . . . . . . . . . . . . . . 210 Using Gmail as Storage for a Photo Gallery . . . . . . . . . . . . . . . . . . . . . 210 And Now . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Chapter 16: Using GmailFS . . . . . . . . . . . . . . . . . . . . . . . . . 213 The Underlying Idea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Installing GmailFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 The Correct Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Installing FUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Installing Libgmail. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Installing GmailFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Using GmailFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Mounting GmailFS from the Command Line . . . . . . . . . . . . . . . . 216 Mounting GmailFS from fstab . . . . . . . . . . . . . . . . . . . . . . . . 217 Passing Commands to the File System . . . . . . . . . . . . . . . . . . . . 217 xiv Contents 02_59611x ftoc.qxp 11/28/05 11:05 PM Page xiv How GmailFS Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 What Makes Up a File? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 Representing All of This in E-Mail . . . . . . . . . . . . . . . . . . . . . . 220 The Actual Data in Action . . . . . . . . . . . . . . . . . . . . . . . . . . 220 And Now . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Appendix: Long Code Listings . . . . . . . . . . . . . . . . . . . . . . . 223 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275