In Soviet Russia we had spies, informants and bugs, in Modern Internet we have pageTracker._setVar() and message bidRequest {}

Though in principal, I’m against the use of “Soviet Russia” or “The Stasi” as shorthand for state surveillance, as this is just propaganda that seeks to portray USSR-aligned intelligence as a disproportionate response to western intelligence acvtivity, which they understate and characterizing as heroic rather than sinister, but something about reading the documentation for Google’s realtime-bidding protocol and good old Yakov Smirnoff’s voice popped into my head saying “In Soviet Russia we had spies, informants and bugs, in Modern Internet we have pageTracker._setVar() and message bidRequest {}”.

When we think of surveillance we imagine trench coated creepers with holes in their newspapers spooking around train stations. Bugs installed in wall clocks. Glaring bureaucrat bullying incriminating testimony out of hapless informants. Yet, for the modern advertiser who wants to know the location, browsing habbits, gender, and other demographic data of Web users, this information magically comes to them in a bidRequest message when they participate in an online advertising auction.

message BidRequest {


// A hyperlocal targeting location when available.
message Hyperlocal {
// A location on the Earth’s surface.
message Point {
optional float latitude = 1;
optional float longitude = 2;

// The mobile device can be at any point inside the geofence polygon defined
// by a list of corners. Currently, the polygon is always a parallelogram
// with 4 corners.
repeated Point corners = 1;

message HyperlocalSet {
// This field currently contains at most one hyperlocal polygon.
repeated Hyperlocal hyperlocal = 1;

// The approximate geometric center of the geofence area. It is calculated
// exclusively based on the geometric shape of the geofence area and in no
// way indicates the mobile device’s actual location within the geofence
// area. If multiple hyperlocal polygons are specified above then
// center_point is the geometric center of all hyperlocal polygons.
optional Hyperlocal.Point center_point = 2;

// Hyperlocal targeting signal when available, encrypted as described at
optional bytes encrypted_hyperlocal_set = 40;

// The offset of the user’s time from GMT in minutes. For example, GMT+10 is
// timezone_offset = 600.
optional int32 timezone_offset = 25;

// List of detected user verticals. Currently unused.
repeated int32 user_vertical = 30 [

// Demographic data provided by the publisher.
message UserDemographic {
enum Gender {
MALE = 1;
// Gender
optional Gender gender = 1 [
default = UNKNOWN

// Age interval
optional int32 age_low = 2 [
default = 0];
optional int32 age_high = 3 [
default = 999];
optional UserDemographic user_demographic = 50;

What intelligence agency would not smack their lips at the prospect of that kind of dossier! In real time! And where are the informants that collect all this data? Not the KGB nor the NSA, but google who uses cookies and other techniques to track your browsing, and it’s publishers, who include code snippets in their Google Analytics code to snitch on their visitors.


Millions and millions of websites use google analytics and similar services, and pass information like the above about you to advertising platforms like google.

To channel Yakov again, “In America, spies don’t need to spy, we spy on ourselves to help us shop! What a country!”

Leave a Reply