Killing Tynt’s “Read More” Clipboard Copy Hijacker With The Adblock Plus Plug-In For Firefox

Update, 20 July 2011: I received an e-mail that notes the correct link to Tynt’s opt-out button is now http://www.tynt.com/tynt-users-opt-out. Its author adds that he believes their opt-out system now works.

I love Firefox. It’s pretty much the only Web browser I use.

I hate Tynt. If you’ve ever copied text from a Web page, then pasted it, only to find a mysterious “Read More:” link inserted at the end of the text you copied, you just ran headfirst into Tynt.

Each time a user pastes content from your website into an email, blog or website, we automatically add a URL link back to your site’s original content. When someone clicks that URL, they are directed back to your site and see the original content. This drives incremental traffic to your site when your content is shared without your knowledge while maintaining a consistent user experience.

It may well be a “consistent user experience” for me to have to hit the backspace key to delete the “Read more” link Tynt adds every time I copy a small block of text, but it’s a consistently annoying experience.

I appreciate the importance of reciprocal links. I understand the challenge to content publishers of having content lifted from their Web sites without attribution.

So before I get into details about this fix, let me be clear: If you copy Web content, attribute it. It’s the right thing to do.

That said, there’s a wrong way of getting people to do the right thing, and Tynt is definitely the wrong way.

I find having my simple act of extracting a quote from a Web page turned into a link-spamming takeover of my local machine to be far more disturbing than a tracking cookie or layer ad.

Don’t be messing with my clipboard. It’s mine, not yours. I will put into it what I want there, not what you want.

Fortunately, I was able to put an immediate end to Tynt’s “Read More” clipboard copy highjacking in Firefox with Adblock Plus, a highly popular add-in that does what its name suggests: Blocks advertisements, and other content, from displaying on a page.


How To Block Tynt In Firefox Via Adblock Plus

I don’t mind Web ads. In fact, on many sites, ads are quite useful. But I absolutely despise Tynt, so I went ahead and installed Adblock Plus specifically to deal with it:

  1. I installed AdBlock Plus from the link above.
  2. After restarting Firefox, I was asked to choose a “filter subscription,” which is basically a series of user-contributed rules that block various ads, scripts, images, etc.
    1. Because I don’t mind Web ads, I chose “Cancel.” Adblock Plus warned me that without a subscription, I would need to add any filters manually; I clicked OK.
    2. You can go ahead and add a filter subscription. The “EasyList” subscription is supposed to block Tynt’s functionality; however, I found that was not always the case. For example, the EasyList (English) subscription available at this writing did not block Tynt on MySpace.
  3. I selected Tools –> Add-ons, then clicked the Options button under Adblock Plus.
  4. I clicked “Add Filter” at the bottom of the window that came up.
  5. A “New filter” line opened.
    1. In the text box beneath, I entered *tynt* and hit the Enter key.
    2. A red exclamation point resulted, which indicated that the filter was a regular expression / too short to be optimized. I accepted that; the reason why appears below.
  6. I clicked OK on the filter editing window and Close on the add-ons dialog box.

And just like that, I have not been bothered since by Tynt’s annoying “Read More” hijacking.

The Alternatives Didn’t Work

There are a number of suggestions out there to put an end to Tynt’s activities. I tried most but found them wanting compared to my solution.

Block tcr.tynt.com via your computer’s HOSTS file: This was a popular suggestion. Many claimed it worked fine for them. But some Web sites — again, MySpace serves as an excellent example — aren’t stopped by blocking that one domain.

Tynt actually uses a number of subdomains to deliver its services; in some cases, the Tynt scripts run off the Web server you’re visiting. Since you can’t use wildcards in a HOSTS file, that means adding dozens of entries to the HOSTS file; and again, even that won’t stop Tynt if it is running off the local Web server.

Use the NoScript add-on for Firefox: Another option is to employ NoScript. But that is a nuclear solution; NoScript is pessimistic.

In other words, it blocks all Web sites from running JavaScript, and allows you to whitelist sites. That might have been an acceptable approach to annoying scripts five years ago, but in this age, your Web experience is going to be seriously curtailed if you start by blocking scripts.

Use the YesScript add-on for Firefox: YesScript is a Firefox add-on that takes an optimistic approach to JavaScript. That is, you can blacklist sites, rather than having to whitelist them, as in NoScript.

Unfortunately, I did not see a way to use wildcards with YesScript, which pretty much made it the same as the HOSTS file option; and therefore, it did not work, for pretty much the same reasons.

And for the record, I looked for Greasemonkey scripts (couldn’t find one), add-ons specific to Tynt (couldn’t find one), and even tried using Tynt’s purported global opt-out button (surprise: it didn’t work).

About That Exclamation Point In Adblock Plus

Which brings us to the warning Adblock Plus shows about the filter rule.

As previously noted, our filter uses *tynt* as its expression. This is basically an instruction to Adblock Plus to block all objects that contain the letter sequence tynt: scripts, images, cookies, HTML, whatever.

Adblock Plus is smart enough to know that this is a very broad stroke; it’s four characters long, and generally speaking, that’s a wide net to cast — a net that could well catch a lot of fish we don’t want to fry.

For example, suppose we used the expression *ding*, instead. That would catch over 900 different dictionary words alone, most likely removing content from the page that we actually want to see.

On the other hand, *tynt* catches zero dictionary words. Because that combination of letters is so rare — it almost exclusively applies to content we intend to block — the chances it blocks something we want to see is infinitesimal.

But Adblock Plus doesn’t know that, so it warns us.

Finally, I used *tynt* as the filter expression because I want to block not only scripts and content emanating from tynt.com, but to also catch local implementations of Tynt’s scripts and objects.

In other words, the entire Tynt clipboard hijacking solution could be installed on the Web host I am visiting. But the objects those scripts use are going to have to invoke the term tynt in calling objects or sending requests to Tynt’s servers in order to work; I am catching every time that happens with this expression, and putting an end to it before it begins.

All links in this post on delicious: http://delicious.com/dougvdotcom/killing-tynts-read-more-clipboard-copy-hijacker-with-the-adblock-plus-plug-in-for-firefox

7 thoughts on “Killing Tynt’s “Read More” Clipboard Copy Hijacker With The Adblock Plus Plug-In For Firefox

  1. Doug Vanderweide Post author

    @Rudiger: As noted in the article, some sites — notably, MySpace — locally store the operative JavaScript files. In that instance, blocking tynt.com does not stop the scripts from being loaded.

    By blocking *tynt*, I not only prevent the relevant scripts hosted on Tynt’s servers from loading, I prevent JavaScript objects that contains the word “tynt” anywhere in its text from loading. Since even local implementations of Tynt require calls to objects that contain the letters “tynt” in their names, my method has (so far for me, at least) blocked Tynt’s scripts everywhere I used to encounter them.

    In re: being “faster,” AdBlock scrubs documents after the Mozilla engine has rendered them. I see no evidence that suggests blocking “.tynt.com” vs. “tynt” would be any more efficient in a practical, or significantly measurable, sense.

    Note that my method will not work if someone were to rewrite the Tynt scripts to replace “tynt” as a sequence. So far, I have not encountered that.

  2. kblar

    “So before I get into details about this fix, let me be clear: If you copy Web content, attribute it. It’s the right thing to do.”
    Then what’s the difference if Tynt does it for you or if you do it yourself? You just killed your own argument by saying that.

  3. Doug Vanderweide Post author

    @kblar: That I should attribute something is a question of ethics. That I am subjected to a methodology of doing so is a question of mechanics. They aren’t the same thing.

  4. N

    –dunno why but my comment vanished..anyway–using your method, Anything with the words tynt in it, whether name of page, script of even those tabs opened from a tynt named tab(cause for concern?)–started acting up. google rendering blank page, pocket bookmarklet not working on this page, etc.

    instead i’ve tried to combine the two(?) methods;
    an ablock filter of: tcr.tynt.com*

    ..it seems to have worked as of now. bookmarklet and google pages working again(albeit with quite a noticeable delay even with just a simple refresh..) with tynt stuff Not working. hopefully there won’t be any future surprise consequences…


    result-wise i was actually looking for an app that’ll actually enable such a feature for all sites–but only once so on a mass mutiple clipping spree, you’d get the source url once without needing to input it manually yourself–and then just and only the clipped text itself everytime after.

    but from reading these, am guessing that’s probably impossible at this point..

    thank you for reading and sorry to bother you.

  5. greendestiny

    Thanks for the explanation. For now, I blocked ||tynt.com^ with a vengeance, so far no problems, if any arise, I will reevaluate the situation again.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>