How to Do PPV Research Conveniently

Posted by Methylated on December 30, 2009

PPV (AKA CPV), though certainly not new, has been gaining attention in the AM scene lately. For doing market research, you can install ad supported software such as VombaToolbar on your computer to see exactly what ads the user is seeing. There are a few issues associated with this approach. Mac and Linux marketers may not be able to install these apps on their OS. But even if I was on Windows, and even though adware isn’t exactly spyware, I don’t want any of it on my machine. I used to write spyware and adware, and while I feel confident in understanding how these apps work internally and in how secure they are, I just don’t want anything extra running in the background. There are a few solutions for this.

I can dual boot, meaning install another OS on my machine, and reboot to go into it, do some testing, and then reboot again to go back into my primary OS. I never reboot (literally) unless I absolutely have to, because I hate closing my gazillion Firefox tabs (which I’ll probably never get to anyway, but that’s besides the point!) – so this isn’t ideal in my case.

Another solution would be to have a dedicated machine specifically for testing. This is OK, especially considering you can buy a Dell desktop for a few hundred bucks, conveniently preloaded with spyadware. I have enough machines running already, and don’t like the idea of having another box taking up space.

What to do? Virtualization. You can run another OS sandboxed inside your primary OS. This means I can work as usual in Mac or Linux (or Windows), and when doing research, run a program which will load a new instance of Windows inside a window, which I can install adware in, do my research, etc and then close (simulates a shutdown). Besides the convenience of not having to reboot or run another machine, I can load multiple OSes simultaneously – XP, Vista, 7, etc.

This is done using software like VirtualBox, or VMware. After installing these, you will of course need a Windows CD/DVD (or you can mount an iso) to install the OS. There are others,

VirtualBox
VMWare
VMware Fusion (Mac)
Parallels (Mac)

How to Turn Prosper202 into a Desktop App

Posted by Methylated on May 03, 2009

prism 300x174 How to Turn Prosper202 into a Desktop App

Sites and web services that you use constantly are better taken out of the browser and made individual processes on your desktop. This means that when you close the browser, or if it crashes, the sites you’re running individually (prosper202 for example) will not be affected. This is a major problem because nowadays we do most of our work in the browser.

Google Chrome solves this problem by making each tab/window an individual process. The problem with Google Chrome is that there really is no need to have the entire browser running just to view 1 site, which may be static. Instead, look into some of the apps created specifically for this task. These are termed Site-Specific-Browsers (SSB)s, and they’ve existed for a few years now.

There are alternatives but I use Mozilla Prism (or any of the alternatives). Prism is basically a minimal browser which is intended to display one site only (per instance of Prism). It also creates a desktop/start menu icon to quickly open that specific site/web app.

An excellent example of a web service that should be run off the browser is Google Calendar. I have this turned on full screen 24/7 on one of my desktops. I can restart Firefox every time it begins exhibiting its annoying memory leak feature, and the calendar will remain open and fast. Some other great services to keep running are your prosper202/tracking202 accounts, PPC accounts, SplitTester.com, and maybe some forums you frequent often.

Using svn/git to Manage Landing Pages

Posted by Methylated on April 30, 2009

Version Control like Subversion and git are tools used primarily by programmers to keep track of code, and to collaborate changes when working in a group. Each person in the group edits/adds code and then “checks it in” to the repository. Other people in the group can check in their changes, and fetch changes that have been checked in to the repository, meaning that everyone in the group stays in sync without having to zip up and email or FTP individual code changes between each other.

This tools are invaluable for programmers, but they can be used by anyone. You can use them to mange static sites … which is basically what your landing pages are.

Why Use Version Control Systems for Landing Pages?

You can work on multiple computers and devices, and your landing page will be in sync on each device.

You can edit your remote/live landing page from any computer, without having to FTP or SSH to your server.

This means you can make changes fast, almost instantanously.

Your landing pages and code are highly organized. These tools keep a log of your changes, so you can check the timestamp and see exactly what change on your landing page had what effect on your CTR/conversions.

Reliability. Using these tools, you’re automatically backing up every change you’re making to the LP. This also means that should you want to switch servers, or if your server goes down, you can quickly just sync your local landing page onto the new server and be back up and running in minutes.

You can sync landing pages between users. Great if you work in a group or you hire people to make edits for you.

What Are The Cons?

The biggest con is the learning curve. These tools can be a pain to learn because of confusing terminology and concepts, but deep down they are basic applications that simply sync changes between different machines. The difference is that they are meant to sync on a very frequent basis and are optimized and come with many features for handling text/code changes between multiple users, and between “development” (LP on your local computer) and “production” (your remote, live LP) machines.

About svn/git

Subversion, also known as svn is a popular and easy to use version control system. Git is a newer, distributed version control system that was created by Linus Trovalds to manage the Linux Kernel source tree. At its heart, git is very simple, but it can be extremely confusing to learn if you’re coming from an svn background. They both might seem the same at times, but they work differently. The main difference is that subversion has a central repository where all the code gets checked into. Git is distributed, meaning each user has their own repository, and can sync with any other user. I won’t go into detail because it’s not important for managing your LPs.

Example of How They Are Used

Here’s a direct example of how I use git to manage my LPs. I look at my landing page and decide that I’d like to change the ad copy, perhaps revise it and make it shorter. NORMALLY, I would login to my server using FTP and make the changes to the index.html (or whatever) file. Or I may change the file on my own PC and then login to the server and upload it. But here’s how I would do it using git:

I open index.html on my PC, and revise the ad copy.
I then check in my changes using 1 command, on my PC.
The changes are sent over to the remote server, and merged with the landing page. That’s it.

To check in changes, I just use this command:

git commit -a -m "revised ad copy, removed word 'free', highlighted some text in yellow"

This creates an anchor in my code that has the message above. This means that in my log files, I will see “July 1st 2009, revised ad copy, re…” and I can choose to undo this change anytime in the future.

I then “push” the changes to the server using

git push

That’s it on my part. Done.

What happens behind the scenes is, git connects to the repository on my web server and sends the changes over. The changes are examined and merged with the landing page on the web server and then the main live landing page is updated to reflect the changes. I literally can refresh the page as soon as I hit “git push” and can see the changes have taken place on the landing page.

svn is used the same way except I only need to do:

svn commit -m "revised ad copy, removed word ...."

This commits and pushes the changes automatically.

If you aren’t into typing in commands, there are git and svn interfaces for Windows.

http://code.google.com/p/tortoisegit/

I’ll go into setting these up for your landing page later this week. For now, see these:
http://git.or.cz/gitwiki/GitDocumentation

http://svnbook.red-bean.com/

http://biodegradablegeek.com/2009/03/how-to-maintain-static-sites-with-git-jekyll/

Vim Bindings For Grouping Keywords

Posted by Methylated on February 05, 2009

I’m the only person I know who uses vim for grouping keywords. I tried Excel/Open Spreadsheets, but I find it overkill for starting out a campaign. I don’t suggest you begin using vi/vim if you don’t already know how to use it. Failure to heed this advice will lead to severe bruxism and a hole through the monitor.

For those that do use vim, here are two bindings I use to quickly turn a select line to phrase/exact match:

map  :s:^\(.*\)$:[\1]
map  :s:^\(.*\)$:"\1"

Select text -> F7 -> adds [ ] between all words. F8 surrounds words (or lines, rather) with ” ”
To quickly add [ ] to every single keyword, I press: gg + GV + F7

People Stealing Your Landing Pages?

Posted by Methylated on January 01, 2009

If your campaign is doing well, there’s a good chance that eventually, somebody, will use, or worse, expose, your landing page. They might copy it 1:1, they might post it on a forum, or they might just pass it around to a few friends. This is just part of business, and part of life, and it’s only going to get worse as more and more people get into affiliate marketing. There’s one thing you can do about it, and it’s up to you to decide if the pros outweigh the cons.

[Nickycakes](http://nickycakes.com/) wrote a small script called **AntiAff** which matches your users against a database of known marketer IPs. There’s a good chance that if a user has been on an affiliate marketing forum or AM IRC channel, they aren’t going to your landing page to buy Acai. If the IP is blacklisted (i.e., suspected of belonging to somebody literate about affiliate marketing), the user is shown a different landing page than a prospective lead. The page the unwelcome user sees can be blank, but to remain under the radar, a quick worthless landing page can be slapped up which should deter anyone from visiting your domain again.

I was thinking about writing a similar script, but personally I don’t believe the added complexity and problems outweigh the benefits. Also, I take somebody stealing my shit as a challenge to keep coming up with something better.

### Problems With This Approach ###
- It’ll only work if you have a list of IP addresses that are up to date. (See below on how to [collect IP addresses](#collect_ips))

- You’re going to unintentionally blacklist some legitimate users.

- **Again: You can block an entire network of people unintentionally! If somebody visits WickedFire from Starbucks, and that IP is blacklisted, then anybody in Starbucks who tries to access your authentic LP is shit outta luck.**

- People using proxies, VPNs, dial up, or who only browse from work are going to filter through.

- It adds complexity and slightly increases landing page load time.

- This method will eventually be obsolete, but for now and in the near future, it’s still pretty good.

### Collecting IP Addresses ###
- Good ‘ol fashioned bait. Post an image on a forum. Anyone who views your post will unwillingly download the image, saving their IP on your web server’s access log.

- Sit on IRC and just collect everybody’s IP (it’s public)

- Use the bait method on your blog, or create a thin blog or site and de-index it from google (robots.txt), then link to it in your signature on marketing forums. You don’t want it to get indexed because it will begin pulling in valid IPs. Obviously make sure you whitelist Google’s crawler and any known friendly IPs (Facebook reviewers, etc).

- The bait method above can be used to target specific users instead of just on a wide scale. This can be done anytime you need somebody’s IP, via AIM, Facebook, email, etc. This is how we used to do it back in the sub7 days.

- Anytime you’re directly connected with a user, either using AIM’s direct-connect, or during a file transfer, you can use **netstat** to see the subject’s IP.

- Instead of making a thin blog, you can take it a step down and just start a **[netcat](http://en.wikipedia.org/wiki/Netcat) server** and link directly to it.

### Protecting Your Own IP ###
- No Hope For You.

Screen Scraping (Harvesting)

Posted by Methylated on January 01, 2009

Scraping, also known as **screen scraping**, **web scraping**, **extracting**, or **harvesting**, will, in this context, mean harvesting data from one or multiple websites. Data can be anything the website(s) offer. Be it snagging all the search engine results from Google, downloading all the images from a specific gallery, or pulling in dynamic data on an interval (stock quotes, user comments, etc).

## Science of Scrapping ##

Let’s begin with some theory ([skip?](#)). Very basically, your browser is a program that downloads (or **reads**) data from an external source (also known as a **resource**). Since you’re reading this, your browser has downloaded a copy of this website’s HTML/images/CSS code that is being hosted somewhere in the world (New Jersey, in this case).

The basic idea behind scraping is telling the computer to download only specific data from a specific place. Simple enough in theory, but it can get complicated because different websites are structurally different, which means, if you’re being very specific about where certain data is located, that scraper must be updated if the data changes.

This seems like a nightmare, and sometimes it can be, but we’ve come far from the PHP/Perl/Regular Expression days of scraping. While using specific regular expressions to pull data from a body of content is alive and well, it’s tedious and hard to maintain. There have been numerous advancements in **the science of scrapping**.

## Technik Le Scrape ##

Unfortunately, I’m not aware of any particularly useful tools or apps that can do most of the scrapping for you. This means that you will need at least some technical literacy, primarily with programming; Though nothing beyond the basics is required.

### Scrapping Bare: Old Fashioned Way ###

The traditional and probably most popular way of stealing collecting data is using Regular Expressions (from here on in known as **regex**) against the raw content you’re scanning. This means writing very specific patterns that can pick out certain strings in the content.

This is actually kinda fun, which is probably the only reason I still use it from time to time. Also, being that it’s tedious and low-level, it gives you **cool points** (bragging rights), or makes you look like an amateur, depending on who you ask. Regular Expressions are very useful and I highly recommend learning them. Nearly every programming language today has a regex library, with some even sporting built-in support. Your editor should also support regex, else you need (a new editor)[http://vim.org].

**Further Reading**
- [http://en.wikipedia.org/wiki/Regular_expression](http://en.wikipedia.org/wiki/Regular_expression)
- [http://www.regular-expressions.info/](http://www.regular-expressions.info/)

### X Marks The Spot ###
A step up from regular expressions is using Xpath (XML Path). This is a “language” that lets you select or specify specific areas in the document being scanned. This makes it a breeze to scan websites, RSS feeds, and anything with a node/hierarchy structure, so it wouldn’t work for some data (log files for instance).

This is pretty simple stuff. You ignore the fact that the content can be hideously formatted, and only focus on the XHTML structure of it. Think of the (DOM)[http://en.wikipedia.org/wiki/Document_Object_Model] if you’re familiar with Javascript. Similar concept. You traverse nodes to find the data you’re looking for.

**Further Reading**
- [http://en.wikipedia.org/wiki/XPath](http://en.wikipedia.org/wiki/XPath)
- [http://www.w3schools.com/XPath/default.asp](http://www.w3schools.com/XPath/default.asp)

### AHpricot ###
Hpricot is awesome.

### The Big Guns ###
sCRUBYt

List of PPC Network Tracking Variables

Posted by Methylated on January 01, 2009

## [Google Adwords](http://adwords.com/)
- {keyword}
- **Also available (to tell if hit came from content or search, etc)**
- {ifsearch:search}
- {ifcontent:content}
- {placement}
- {creative}
- {keyword}

## [Yahoo! Search Marketing / Panama](https://login.marketingsolutions.yahoo.com/)
- Log in to your account and enable Tracking URLs. Yahoo! automatically appends the keyword.

## [MSN AdSense](http://adcenter.msn.com/)
- {QueryString}

## [ABCSearch](http://abcsearch.com/)
- <<TERMS_HTML>>

## [7Search.com](http://7search.com/)
- ###KEYWORD### (all caps)

## [Miva](http://miva.com/)
- Keyword variable no longer supported by Miva (used to be <<Keyword>>)

## [GoClick](http://goclick.com)
- {kw}

## [Kanoodle](http://kanoodle.com)
- :::query:::

## [Search123](http://search123.com)
- [K]

## [SearchFeed](http://searchfeed.com)
- [KEYWORD]

### [Click here to see a list of PPC Networks](http://incomezombie.com/34/list-of-ppc-networks) ###

Campaign Tracking Tools

Posted by Methylated on January 01, 2009

Prosper202
Tracking202
PPC-Coach Tool

Tracking Campaigns Manually

Posted by Methylated on January 01, 2009

sub-IDs, postbacks, pixels, etc.

Cloaking/Redirects/htaccess

Posted by Methylated on January 01, 2009

301 redirect
.htaccess examples
URLs
cloaking
etc