diff --git a/package.json b/package.json index 5dda490a5e6f4b..59a9658a496f43 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "editor:update-tsd": "pnpm packages:build && node frontend/editor-update-tsd.mjs", "prettier": "prettier --write \"./**/*.{js,mjs,ts,tsx,json,yaml,yml,css,scss}\"", "prettier:check": "prettier --check \"frontend/**/*.{js,mjs,ts,tsx,json,yaml,yml,css,scss}\"", + "prettier:file": "prettier --write", "typescript:check": "tsc --noEmit && echo \"No errors reported by tsc.\"", "lint:js": "eslint frontend/src", "lint:css": "stylelint \"frontend/**/*.{css,scss}\"", diff --git a/posthog/clickhouse/migrations/0050_add_ga4_channel_type.py b/posthog/clickhouse/migrations/0050_add_ga4_channel_type.py new file mode 100644 index 00000000000000..14556a9ce6ccfa --- /dev/null +++ b/posthog/clickhouse/migrations/0050_add_ga4_channel_type.py @@ -0,0 +1,12 @@ +from posthog.clickhouse.client.migration_tools import run_sql_with_exceptions +from posthog.models.channel_type.sql import ( + GA4_CHANNEL_DEFINITION_TABLE_SQL, + GA_CHANNEL_DEFINITIONS_DATA_SQL, + GA4_CHANNEL_DEFINITION_DICTIONARY_SQL, +) + +operations = [ + run_sql_with_exceptions(GA4_CHANNEL_DEFINITION_TABLE_SQL), + run_sql_with_exceptions(GA_CHANNEL_DEFINITIONS_DATA_SQL), + run_sql_with_exceptions(GA4_CHANNEL_DEFINITION_DICTIONARY_SQL), +] diff --git a/posthog/clickhouse/schema.py b/posthog/clickhouse/schema.py index 6ea4991436cf37..0a7d7c42157227 100644 --- a/posthog/clickhouse/schema.py +++ b/posthog/clickhouse/schema.py @@ -9,6 +9,11 @@ ) from posthog.clickhouse.plugin_log_entries import * from posthog.models.app_metrics.sql import * +from posthog.models.channel_type.sql import ( + GA4_CHANNEL_DEFINITION_TABLE_SQL, + GA_CHANNEL_DEFINITIONS_DATA_SQL, + GA4_CHANNEL_DEFINITION_DICTIONARY_SQL, +) from posthog.models.cohort.sql import * from posthog.models.event.sql import * from posthog.models.group.sql import * @@ -57,6 +62,7 @@ APP_METRICS_DATA_TABLE_SQL, PERFORMANCE_EVENTS_TABLE_SQL, SESSION_REPLAY_EVENTS_TABLE_SQL, + GA4_CHANNEL_DEFINITION_TABLE_SQL, ) CREATE_DISTRIBUTED_TABLE_QUERIES = ( WRITABLE_EVENTS_TABLE_SQL, @@ -109,7 +115,9 @@ + CREATE_MV_TABLE_QUERIES ) -CREATE_DICTIONARY_QUERIES = (PERSON_OVERRIDES_CREATE_DICTIONARY_SQL,) +CREATE_DICTIONARY_QUERIES = (PERSON_OVERRIDES_CREATE_DICTIONARY_SQL, GA4_CHANNEL_DEFINITION_DICTIONARY_SQL) + +CREATE_DATA_QUERIES = (GA_CHANNEL_DEFINITIONS_DATA_SQL,) build_query = lambda query: query if isinstance(query, str) else query() get_table_name = lambda query: re.findall(r"[\.\s]`?([a-z0-9_]+)`?\s+ON CLUSTER", build_query(query))[0] diff --git a/posthog/conftest.py b/posthog/conftest.py index 2b819ff9390adc..c3b7a6281cabb0 100644 --- a/posthog/conftest.py +++ b/posthog/conftest.py @@ -14,6 +14,7 @@ def create_clickhouse_tables(num_tables: int): from posthog.clickhouse.schema import ( CREATE_DISTRIBUTED_TABLE_QUERIES, CREATE_MERGETREE_TABLE_QUERIES, + CREATE_DATA_QUERIES, build_query, ) @@ -27,6 +28,9 @@ def create_clickhouse_tables(num_tables: int): queries = list(map(build_query, CREATE_TABLE_QUERIES)) run_clickhouse_statement_in_parallel(queries) + data_queries = list(map(build_query, CREATE_DATA_QUERIES)) + run_clickhouse_statement_in_parallel(data_queries) + def reset_clickhouse_tables(): # Truncate clickhouse tables to default before running test @@ -51,6 +55,7 @@ def reset_clickhouse_tables(): from posthog.session_recordings.sql.session_recording_event_sql import ( TRUNCATE_SESSION_RECORDING_EVENTS_TABLE_SQL, ) + from posthog.models.channel_type.sql import TRUNCATE_GA4_CHANNEL_DEFINITION_TABLE_SQL # REMEMBER TO ADD ANY NEW CLICKHOUSE TABLES TO THIS ARRAY! TABLES_TO_CREATE_DROP = [ @@ -66,6 +71,7 @@ def reset_clickhouse_tables(): TRUNCATE_GROUPS_TABLE_SQL, TRUNCATE_APP_METRICS_TABLE_SQL, TRUNCATE_PERFORMANCE_EVENTS_TABLE_SQL, + TRUNCATE_GA4_CHANNEL_DEFINITION_TABLE_SQL, ] run_clickhouse_statement_in_parallel(TABLES_TO_CREATE_DROP) diff --git a/posthog/hogql/database/database.py b/posthog/hogql/database/database.py index 57b14907f94a37..98b25f1c0e3745 100644 --- a/posthog/hogql/database/database.py +++ b/posthog/hogql/database/database.py @@ -19,6 +19,7 @@ FunctionCallTable, ExpressionField, ) +from posthog.hogql.database.schema.channel_type import create_initial_channel_type, create_initial_domain_type from posthog.hogql.database.schema.log_entries import ( LogEntriesTable, ReplayConsoleLogsLogEntriesTable, @@ -167,6 +168,11 @@ def create_hogql_database(team_id: int, modifiers: Optional[HogQLQueryModifiers] database.events.fields["poe"].fields["id"] = database.events.fields["person_id"] database.events.fields["person"] = FieldTraverser(chain=["poe"]) + database.persons.fields["$initial_referring_domain_type"] = create_initial_domain_type( + "$initial_referring_domain_type" + ) + database.persons.fields["$initial_channel_type"] = create_initial_channel_type("$initial_channel_type") + for mapping in GroupTypeMapping.objects.filter(team=team): if database.events.fields.get(mapping.group_type) is None: database.events.fields[mapping.group_type] = FieldTraverser(chain=[f"group_{mapping.group_type_index}"]) diff --git a/posthog/hogql/database/schema/channel_type.py b/posthog/hogql/database/schema/channel_type.py new file mode 100644 index 00000000000000..6b05e502e6b16d --- /dev/null +++ b/posthog/hogql/database/schema/channel_type.py @@ -0,0 +1,94 @@ +# Create a virtual field that uses GA's channel grouping logic to group events into acquisition channels. +# The source for this logic is: +# UA: https://support.google.com/analytics/answer/3297892?hl=en +# GA4: https://support.google.com/analytics/answer/9756891?hl=en + +# I'm not fully convinced that this approach will work on its own, as GA4 will have a lot more information on paid ads +# than what we will have access to. We'll need to get this live and see what it looks like on Posthog data. +from posthog.hogql.database.models import ExpressionField +from posthog.hogql.parser import parse_expr + + +def create_initial_domain_type(name: str): + return ExpressionField( + name=name, + expr=parse_expr( + """ +if( + properties.$initial_referring_domain = '$direct', + '$direct', + dictGetOrNull( + 'ga4_channel_definition_dict', + 'type', + cutToFirstSignificantSubdomain(coalesce(properties.$initial_referring_domain, '')) + ) +) +""" + ), + ) + + +def create_initial_channel_type(name: str): + return ExpressionField( + name=name, + expr=parse_expr( + """ +multiIf( + match(properties.$initial_utm_campaign, 'cross-network'), + 'Cross Network', + + match(properties.$initial_utm_medium, '^(.*cp.*|ppc|retargeting|paid.*)$'), + CASE dictGetOrNull('ga4_channel_definition_dict', 'type', cutToFirstSignificantSubdomain(coalesce(properties.$initial_referring_domain, ''))) + WHEN 'Shopping' THEN 'Paid Shopping' + WHEN 'Search' THEN 'Paid Search' + WHEN 'Video' THEN 'Paid Video' + WHEN 'Social' THEN 'Paid Social' + ELSE multiIf( + match(properties.$initial_utm_campaign, '^(.*(([^a-df-z]|^)shop|shopping).*)$'), + 'Paid Shopping', + properties.$initial_utm_medium IN + ('display', 'banner', 'expandable', 'interstitial', 'cpm'), + 'Display', + 'Paid Other' + ) + END, + + properties.$initial_referring_domain = '$direct' AND (properties.$initial_utm_medium IS NULL OR properties.$initial_utm_medium = ''), + 'Direct', + + CASE dictGetOrNull('ga4_channel_definition_dict', 'type', cutToFirstSignificantSubdomain(coalesce(properties.$initial_referring_domain, ''))) + WHEN 'Shopping' THEN 'Organic Shopping' + WHEN 'Search' THEN 'Organic Search' + WHEN 'Video' THEN 'Organic Video' + WHEN 'Social' THEN 'Organic Social' + ELSE multiIf( + match(properties.$initial_utm_campaign, '^(.*(([^a-df-z]|^)shop|shopping).*)$'), + 'Organic Shopping', + properties.$initial_utm_medium IN + ('social', 'social-network', 'social-media', 'sm', 'social network', 'social media'), + 'Organic Social', + match(properties.$initial_utm_campaign, '^(.*video.*)$'), + 'Organic Video', + properties.$initial_utm_medium = 'organic', + 'Organic Search', + properties.$initial_utm_medium IN ('referral', 'app', 'link'), + 'Referral', + properties.$initial_utm_source IN ('email', 'e-mail', 'e_mail', 'e mail') + OR properties.$initial_utm_medium IN ('email', 'e-mail', 'e_mail', 'e mail'), + 'Email', + properties.$initial_utm_medium = 'affiliate', + 'Affiliate', + properties.$initial_utm_medium = 'audio', + 'Audio', + properties.$initial_utm_source = 'sms' OR properties.$initial_utm_medium = 'sms', + 'SMS', + match(properties.$initial_utm_medium, '(push$|mobile|notification)') + OR properties.$initial_utm_source = 'firebase', + 'Push', + NULL + ) + END +)""", + start=None, + ), + ) diff --git a/posthog/hogql/database/schema/test/test_channel_type.py b/posthog/hogql/database/schema/test/test_channel_type.py new file mode 100644 index 00000000000000..817328463fd602 --- /dev/null +++ b/posthog/hogql/database/schema/test/test_channel_type.py @@ -0,0 +1,160 @@ +import uuid + +from posthog.hogql import ast +from posthog.hogql.parser import parse_select +from posthog.hogql.query import execute_hogql_query +from posthog.test.base import ( + APIBaseTest, + ClickhouseTestMixin, + _create_person, +) + + +class ReferringDomainTypeQueryRunner(ClickhouseTestMixin, APIBaseTest): + maxDiff = None + + def _get_initial_referring_domain_type(self, initial_referring_domain: str): + person_id = str(uuid.uuid4()) + + _create_person( + uuid=person_id, + team_id=self.team.pk, + distinct_ids=[person_id], + properties={ + "$initial_referring_domain": initial_referring_domain, + }, + ) + + response = execute_hogql_query( + parse_select( + "select $initial_referring_domain_type as channel_type from persons where id = {person_id}", + placeholders={"person_id": ast.Constant(value=person_id)}, + ), + self.team, + ) + + return response.results[0][0] + + def test_direct(self): + self.assertEqual( + "$direct", + self._get_initial_referring_domain_type("$direct"), + ) + + def test_search(self): + self.assertEqual( + "Search", + self._get_initial_referring_domain_type("www.google.co.uk"), + ) + self.assertEqual( + "Search", + self._get_initial_referring_domain_type("yahoo.co.jp"), + ) + + def test_shopping(self): + self.assertEqual( + "Shopping", + self._get_initial_referring_domain_type("m.alibaba.com"), + ) + self.assertEqual( + "Shopping", + self._get_initial_referring_domain_type("stripe.com"), + ) + + def test_social(self): + self.assertEqual( + "Social", + self._get_initial_referring_domain_type("lnkd.in"), + ) + self.assertEqual( + "Social", + self._get_initial_referring_domain_type("old.reddit.com"), + ) + + +class ChannelTypeQueryRunner(ClickhouseTestMixin, APIBaseTest): + maxDiff = None + + def _get_initial_channel_type(self, properties=None): + person_id = str(uuid.uuid4()) + + _create_person( + uuid=person_id, + team_id=self.team.pk, + distinct_ids=[person_id], + properties=properties, + ) + + response = execute_hogql_query( + parse_select( + "select $initial_channel_type as channel_type from persons where id = {person_id}", + placeholders={"person_id": ast.Constant(value=person_id)}, + ), + self.team, + ) + + return response.results[0][0] + + def test_direct(self): + self.assertEqual( + "Direct", + self._get_initial_channel_type( + { + "$initial_referring_domain": "$direct", + } + ), + ) + + def test_cross_network(self): + self.assertEqual( + "Cross Network", + self._get_initial_channel_type( + { + "$initial_referring_domain": "$direct", + "$initial_utm_campaign": "cross-network", + } + ), + ) + + def test_paid_shopping(self): + self.assertEqual( + "Paid Shopping", + self._get_initial_channel_type( + { + "$initial_referring_domain": "www.ebay.co.uk", + "$initial_utm_medium": "ppc", + } + ), + ) + + def test_paid_search(self): + self.assertEqual( + "Paid Shopping", + self._get_initial_channel_type( + { + "$initial_referring_domain": "www.ebay.co.uk", + "$initial_utm_medium": "ppc", + } + ), + ) + + def test_paid_video(self): + self.assertEqual( + "Paid Video", + self._get_initial_channel_type( + { + "$initial_referring_domain": "youtube.com", + "$initial_utm_medium": "cpm", + } + ), + ) + + def test_organic_video(self): + self.assertEqual( + "Organic Video", + self._get_initial_channel_type( + { + "$initial_referring_domain": "youtube.com", + } + ), + ) diff --git a/posthog/hogql/functions/mapping.py b/posthog/hogql/functions/mapping.py index 018ddc23b49b40..bebafb31357e9a 100644 --- a/posthog/hogql/functions/mapping.py +++ b/posthog/hogql/functions/mapping.py @@ -568,6 +568,10 @@ class HogQLFunctionMeta: "nth_value": HogQLFunctionMeta("nth_value", 2, 2), "lagInFrame": HogQLFunctionMeta("lagInFrame", 1, 1), "leadInFrame": HogQLFunctionMeta("leadInFrame", 1, 1), + # dict + "dictGet": HogQLFunctionMeta("dictGet", 3, 3), + "dictGetOrNull": HogQLFunctionMeta("dictGetOrNull", 3, 3), + "dictGetOrDefault": HogQLFunctionMeta("dictGetOrDefault", 4, 4), } # Permitted HogQL aggregations HOGQL_AGGREGATIONS: Dict[str, HogQLFunctionMeta] = { diff --git a/posthog/management/commands/clean_ga4_sources_file.py b/posthog/management/commands/clean_ga4_sources_file.py new file mode 100644 index 00000000000000..b0b116d69aaa49 --- /dev/null +++ b/posthog/management/commands/clean_ga4_sources_file.py @@ -0,0 +1,81 @@ +import json +import logging +import re +import subprocess + +from django.core.management.base import BaseCommand + +logging.getLogger("kafka").setLevel(logging.ERROR) # Hide kafka-python's logspam + +OUTPUT_FILE = "posthog/hogql/database/schema/channel_grouping.json" + + +class Command(BaseCommand): + help = ( + "Clean a ga4 sources file like . The best way I have found to do this is to open it in Google Docs, " + "then copy/paste it to a text file, then run this command on it." + ) + + def add_arguments(self, parser): + parser.add_argument("input", type=str, help="Input file") + + def handle(self, *args, **options): + input_arg = options.get("input") + if not input_arg: + raise ValueError("No input file specified") + with open(input_arg, "r") as input_file: + input_str = input_file.read() + split_items = re.findall(r"\S+\s+SOURCE_CATEGORY_\S+", input_str) + + def handle_entry(entry): + items = re.findall(r"\S+", entry.strip()) + if len(items) != 2: + return None + + [domain, raw_type] = items + + pretty_type = raw_type[len("SOURCE_CATEGORY_") :].capitalize() + + return domain, pretty_type + + entries = list(map(handle_entry, split_items)) + + # add google domains to this, from https://www.google.com/supported_domains + for domain in ( + ".google.com .google.ad .google.ae .google.com.af .google.com.ag .google.al .google.am .google.co.ao " + ".google.com.ar .google.as .google.at .google.com.au .google.az .google.ba .google.com.bd .google.be " + ".google.bf .google.bg .google.com.bh .google.bi .google.bj .google.com.bn .google.com.bo " + ".google.com.br .google.bs .google.bt .google.co.bw .google.by .google.com.bz .google.ca .google.cd " + ".google.cf .google.cg .google.ch .google.ci .google.co.ck .google.cl .google.cm .google.cn " + ".google.com.co .google.co.cr .google.com.cu .google.cv .google.com.cy .google.cz .google.de .google.dj " + ".google.dk .google.dm .google.com.do .google.dz .google.com.ec .google.ee .google.com.eg .google.es " + ".google.com.et .google.fi .google.com.fj .google.fm .google.fr .google.ga .google.ge .google.gg " + ".google.com.gh .google.com.gi .google.gl .google.gm .google.gr .google.com.gt .google.gy " + ".google.com.hk .google.hn .google.hr .google.ht .google.hu .google.co.id .google.ie .google.co.il " + ".google.im .google.co.in .google.iq .google.is .google.it .google.je .google.com.jm .google.jo " + ".google.co.jp .google.co.ke .google.com.kh .google.ki .google.kg .google.co.kr .google.com.kw " + ".google.kz .google.la .google.com.lb .google.li .google.lk .google.co.ls .google.lt .google.lu " + ".google.lv .google.com.ly .google.co.ma .google.md .google.me .google.mg .google.mk .google.ml " + ".google.com.mm .google.mn .google.com.mt .google.mu .google.mv .google.mw .google.com.mx " + ".google.com.my .google.co.mz .google.com.na .google.com.ng .google.com.ni .google.ne .google.nl " + ".google.no .google.com.np .google.nr .google.nu .google.co.nz .google.com.om .google.com.pa " + ".google.com.pe .google.com.pg .google.com.ph .google.com.pk .google.pl .google.pn .google.com.pr " + ".google.ps .google.pt .google.com.py .google.com.qa .google.ro .google.ru .google.rw .google.com.sa " + ".google.com.sb .google.sc .google.se .google.com.sg .google.sh .google.si .google.sk .google.com.sl " + ".google.sn .google.so .google.sm .google.sr .google.st .google.com.sv .google.td .google.tg " + ".google.co.th .google.com.tj .google.tl .google.tm .google.tn .google.to .google.com.tr .google.tt " + ".google.com.tw .google.co.tz .google.com.ua .google.co.ug .google.co.uk .google.com.uy .google.co.uz " + ".google.com.vc .google.co.ve .google.co.vi .google.com.vn .google.vu .google.ws .google.rs " + ".google.co.za .google.co.zm .google.co.zw .google.cat" + ).split(" "): + domain = domain.strip() + if domain[0] == ".": + domain = domain[1:] + if not domain: + continue + entries.append((domain, "Search")) + + # write a pretty JSON file out + with open(OUTPUT_FILE, "w") as output_file: + output_file.write(json.dumps(entries)) + subprocess.run(["pnpm", "run", "prettier:file", OUTPUT_FILE]) diff --git a/posthog/models/channel_type/__init__.py b/posthog/models/channel_type/__init__.py new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/posthog/models/channel_type/ga4_channel_definitions.json b/posthog/models/channel_type/ga4_channel_definitions.json new file mode 100644 index 00000000000000..28fa793cb51fa7 --- /dev/null +++ b/posthog/models/channel_type/ga4_channel_definitions.json @@ -0,0 +1,1008 @@ +[ + ["360.cn", "Search"], + ["43things", "Social"], + ["43things.com", "Social"], + ["51.com", "Social"], + ["5ch.net", "Social"], + ["Shopping", "Shopping"], + ["Hatena", "Social"], + ["IGShopping", "Shopping"], + ["ImageShack", "Social"], + ["aax-us-east.amazon-adsystem.com", "Shopping"], + ["aax.amazon-adsystem.com", "Shopping"], + ["academia.edu", "Social"], + ["activerain", "Social"], + ["activerain.com", "Social"], + ["activeworlds", "Social"], + ["activeworlds.com", "Social"], + ["addthis", "Social"], + ["addthis.com", "Social"], + ["airg.ca", "Social"], + ["alibaba", "Shopping"], + ["alibaba.com", "Shopping"], + ["alice", "Search"], + ["allnurses.com", "Social"], + ["allrecipes.com", "Social"], + ["alumniclass", "Social"], + ["alumniclass.com", "Social"], + ["amazon", "Shopping"], + ["amazon.co.uk", "Shopping"], + ["amazon.com", "Shopping"], + ["ameba.jp", "Social"], + ["ameblo.jp", "Social"], + ["americantowns", "Social"], + ["americantowns.com", "Social"], + ["amp.reddit.com", "Social"], + ["ancestry.com", "Social"], + ["anobii", "Social"], + ["anobii.com", "Social"], + ["answerbag", "Social"], + ["answerbag.com", "Social"], + ["answers.yahoo.com", "Social"], + ["aol", "Search"], + ["aolanswers", "Social"], + ["aolanswers.com", "Social"], + ["apps.facebook.com", "Social"], + ["apps.shopify.com", "Shopping"], + ["ar.pinterest.com", "Social"], + ["ar.search.yahoo.com", "Search"], + ["artstation.com", "Social"], + ["ask", "Search"], + ["askubuntu", "Social"], + ["askubuntu.com", "Social"], + ["asmallworld.com", "Social"], + ["at.search.yahoo.com", "Search"], + ["athlinks", "Social"], + ["athlinks.com", "Social"], + ["au.search.yahoo.com", "Search"], + ["auone", "Search"], + ["avg", "Search"], + ["away.vk.com", "Social"], + ["awe.sm", "Social"], + ["b.hatena.ne.jp", "Social"], + ["baby-gaga", "Social"], + ["baby-gaga.com", "Social"], + ["babyblog.ru", "Social"], + ["babylon", "Search"], + ["badoo", "Social"], + ["badoo.com", "Social"], + ["baidu", "Search"], + ["bebo", "Social"], + ["bebo.com", "Social"], + ["beforeitsnews", "Social"], + ["beforeitsnews.com", "Social"], + ["bharatstudent", "Social"], + ["bharatstudent.com", "Social"], + ["biglobe", "Search"], + ["biglobe.co.jp", "Search"], + ["biglobe.ne.jp", "Search"], + ["biip.no", "Social"], + ["bing", "Search"], + ["biswap.org", "Social"], + ["bit.ly", "Social"], + ["blackcareernetwork.com", "Social"], + ["blackplanet", "Social"], + ["blackplanet.com", "Social"], + ["blip.fm", "Social"], + ["blog.com", "Social"], + ["blog.feedspot.com", "Social"], + ["blog.goo.ne.jp", "Social"], + ["blog.naver.com", "Social"], + ["blog.twitch.tv", "Video"], + ["blog.yahoo.co.jp", "Social"], + ["blogg.no", "Social"], + ["bloggang.com", "Social"], + ["blogger", "Social"], + ["blogger.com", "Social"], + ["blogher", "Social"], + ["blogher.com", "Social"], + ["bloglines", "Social"], + ["bloglines.com", "Social"], + ["blogs.com", "Social"], + ["blogsome", "Social"], + ["blogsome.com", "Social"], + ["blogspot", "Social"], + ["blogspot.com", "Social"], + ["blogster", "Social"], + ["blogster.com", "Social"], + ["blurtit", "Social"], + ["blurtit.com", "Social"], + ["bookmarks.yahoo.co.jp", "Social"], + ["bookmarks.yahoo.com", "Social"], + ["br.pinterest.com", "Social"], + ["br.search.yahoo.com", "Search"], + ["brightkite", "Social"], + ["brightkite.com", "Social"], + ["brizzly", "Social"], + ["brizzly.com", "Social"], + ["business.facebook.com", "Social"], + ["buzzfeed", "Social"], + ["buzzfeed.com", "Social"], + ["buzznet", "Social"], + ["buzznet.com", "Social"], + ["ca.search.yahoo.com", "Search"], + ["cafe.naver.com", "Social"], + ["cafemom", "Social"], + ["cafemom.com", "Social"], + ["camospace", "Social"], + ["camospace.com", "Social"], + ["canalblog.com", "Social"], + ["care.com", "Social"], + ["care2", "Social"], + ["care2.com", "Social"], + ["caringbridge.org", "Social"], + ["catster", "Social"], + ["catster.com", "Social"], + ["cbnt.io", "Social"], + ["cellufun", "Social"], + ["cellufun.com", "Social"], + ["centerblog.net", "Social"], + ["centrum.cz", "Search"], + ["ch.search.yahoo.com", "Search"], + ["chat.zalo.me", "Social"], + ["checkout.shopify.com", "Shopping"], + ["checkout.stripe.com", "Shopping"], + ["chegg.com", "Social"], + ["chicagonow", "Social"], + ["chicagonow.com", "Social"], + ["chiebukuro.yahoo.co.jp", "Social"], + ["cl.search.yahoo.com", "Search"], + ["classmates", "Social"], + ["classmates.com", "Social"], + ["classquest", "Social"], + ["classquest.com", "Social"], + ["cn.bing.com", "Search"], + ["cnn", "Search"], + ["co.pinterest.com", "Social"], + ["co.search.yahoo.com", "Search"], + ["cocolog-nifty", "Social"], + ["cocolog-nifty.com", "Social"], + ["comcast", "Search"], + ["conduit", "Search"], + ["copainsdavant.linternaute.com", "Social"], + ["couchsurfing.org", "Social"], + ["cozycot", "Social"], + ["cozycot.com", "Social"], + ["cr.shopping.naver.com", "Shopping"], + ["cr2.shopping.naver.com", "Shopping"], + ["crackle", "Video"], + ["crackle.com", "Video"], + ["cross.tv", "Social"], + ["crunchyroll", "Social"], + ["crunchyroll.com", "Social"], + ["curiositystream", "Video"], + ["curiositystream.com", "Video"], + ["cyworld", "Social"], + ["cyworld.com", "Social"], + ["cz.pinterest.com", "Social"], + ["d.hatena.ne.jp", "Social"], + ["d.tube", "Video"], + ["dailymotion", "Video"], + ["dailymotion.com", "Video"], + ["dailystrength.org", "Social"], + ["dashboard.twitch.tv", "Video"], + ["daum", "Search"], + ["daum.net", "Search"], + ["de.search.yahoo.com", "Search"], + ["deluxe.com", "Social"], + ["deviantart", "Social"], + ["deviantart.com", "Social"], + ["dianping", "Social"], + ["dianping.com", "Social"], + ["digg", "Social"], + ["digg.com", "Social"], + ["diigo", "Social"], + ["diigo.com", "Social"], + ["discover.hubpages.com", "Social"], + ["disneyplus", "Video"], + ["disneyplus.com", "Video"], + ["disqus", "Social"], + ["disqus.com", "Social"], + ["dk.search.yahoo.com", "Search"], + ["dogpile", "Search"], + ["dogpile.com", "Search"], + ["dogster", "Social"], + ["dogster.com", "Social"], + ["dol2day", "Social"], + ["dol2day.com", "Social"], + ["doostang", "Social"], + ["doostang.com", "Social"], + ["dopplr", "Social"], + ["dopplr.com", "Social"], + ["douban", "Social"], + ["douban.com", "Social"], + ["draft.blogger.com", "Social"], + ["draugiem.lv", "Social"], + ["drugs-forum", "Social"], + ["drugs-forum.com", "Social"], + ["duckduckgo", "Search"], + ["dzone", "Social"], + ["dzone.com", "Social"], + ["ebay", "Shopping"], + ["ebay.co.uk", "Shopping"], + ["ebay.com", "Shopping"], + ["ebay.com.au", "Shopping"], + ["ebay.de", "Shopping"], + ["ecosia.org", "Search"], + ["edublogs.org", "Social"], + ["elftown", "Social"], + ["elftown.com", "Social"], + ["email.seznam.cz", "Search"], + ["eniro", "Search"], + ["epicurious.com", "Social"], + ["es.search.yahoo.com", "Search"], + ["espanol.search.yahoo.com", "Search"], + ["etsy", "Shopping"], + ["etsy.com", "Shopping"], + ["everforo.com", "Social"], + ["exalead.com", "Search"], + ["exblog.jp", "Social"], + ["excite.com", "Search"], + ["extole", "Social"], + ["extole.com", "Social"], + ["facebook", "Social"], + ["facebook.com", "Social"], + ["faceparty", "Social"], + ["faceparty.com", "Social"], + ["fandom.com", "Social"], + ["fanpop", "Social"], + ["fanpop.com", "Social"], + ["fark", "Social"], + ["fark.com", "Social"], + ["fast.wistia.net", "Video"], + ["fb", "Social"], + ["fb.me", "Social"], + ["fc2", "Social"], + ["fc2.com", "Social"], + ["feedspot", "Social"], + ["feministing", "Social"], + ["feministing.com", "Social"], + ["fi.search.yahoo.com", "Search"], + ["filmaffinity", "Social"], + ["filmaffinity.com", "Social"], + ["firmy.cz", "Search"], + ["flickr", "Social"], + ["flickr.com", "Social"], + ["flipboard", "Social"], + ["flipboard.com", "Social"], + ["folkdirect", "Social"], + ["folkdirect.com", "Social"], + ["foodservice", "Social"], + ["foodservice.com", "Social"], + ["forums.androidcentral.com", "Social"], + ["forums.crackberry.com", "Social"], + ["forums.imore.com", "Social"], + ["forums.nexopia.com", "Social"], + ["forums.webosnation.com", "Social"], + ["forums.wpcentral.com", "Social"], + ["fotki", "Social"], + ["fotki.com", "Social"], + ["fotolog", "Social"], + ["fotolog.com", "Social"], + ["foursquare", "Social"], + ["foursquare.com", "Social"], + ["fr.search.yahoo.com", "Search"], + ["free.facebook.com", "Social"], + ["friendfeed", "Social"], + ["friendfeed.com", "Social"], + ["fruehstueckstreff.org", "Social"], + ["fubar", "Social"], + ["fubar.com", "Social"], + ["gaiaonline", "Social"], + ["gaiaonline.com", "Social"], + ["gamerdna", "Social"], + ["gamerdna.com", "Social"], + ["gather.com", "Social"], + ["geni.com", "Social"], + ["getpocket.com", "Social"], + ["glassboard", "Social"], + ["glassboard.com", "Social"], + ["glassdoor", "Social"], + ["glassdoor.com", "Social"], + ["globo", "Search"], + ["go.mail.ru", "Search"], + ["godtube", "Social"], + ["godtube.com", "Social"], + ["goldenline.pl", "Social"], + ["goldstar", "Social"], + ["goldstar.com", "Social"], + ["goo.gl", "Social"], + ["gooblog", "Social"], + ["goodreads", "Social"], + ["goodreads.com", "Social"], + ["google", "Search"], + ["google+", "Social"], + ["google-play", "Search"], + ["googlegroups.com", "Social"], + ["googleplus", "Social"], + ["govloop", "Social"], + ["govloop.com", "Social"], + ["gowalla", "Social"], + ["gowalla.com", "Social"], + ["gree.jp", "Social"], + ["groups.google.com", "Social"], + ["gulli.com", "Social"], + ["gutefrage.net", "Social"], + ["habbo", "Social"], + ["habbo.com", "Social"], + ["help.hulu.com", "Video"], + ["help.netflix.com", "Video"], + ["hi5", "Social"], + ["hi5.com", "Social"], + ["hk.search.yahoo.com", "Search"], + ["hootsuite", "Social"], + ["hootsuite.com", "Social"], + ["houzz", "Social"], + ["houzz.com", "Social"], + ["hoverspot", "Social"], + ["hoverspot.com", "Social"], + ["hr.com", "Social"], + ["hu.pinterest.com", "Social"], + ["hubculture", "Social"], + ["hubculture.com", "Social"], + ["hubpages.com", "Social"], + ["hulu", "Video"], + ["hulu.com", "Video"], + ["hyves.net", "Social"], + ["hyves.nl", "Social"], + ["ibibo", "Social"], + ["ibibo.com", "Social"], + ["id.pinterest.com", "Social"], + ["id.search.yahoo.com", "Search"], + ["id.twitch.tv", "Video"], + ["identi.ca", "Social"], + ["ig", "Social"], + ["imageshack.com", "Social"], + ["imageshack.us", "Social"], + ["imvu", "Social"], + ["imvu.com", "Social"], + ["in.pinterest.com", "Social"], + ["in.search.yahoo.com", "Search"], + ["incredimail", "Search"], + ["insanejournal", "Social"], + ["insanejournal.com", "Social"], + ["instagram", "Social"], + ["instagram.com", "Social"], + ["instapaper", "Social"], + ["instapaper.com", "Social"], + ["internations.org", "Social"], + ["interpals.net", "Social"], + ["intherooms", "Social"], + ["intherooms.com", "Social"], + ["iq.com", "Video"], + ["iqiyi", "Video"], + ["iqiyi.com", "Video"], + ["irc-galleria.net", "Social"], + ["is.gd", "Social"], + ["it.search.yahoo.com", "Search"], + ["italki", "Social"], + ["italki.com", "Social"], + ["jammerdirect", "Social"], + ["jammerdirect.com", "Social"], + ["jappy.com", "Social"], + ["jappy.de", "Social"], + ["jobs.netflix.com", "Video"], + ["justin.tv", "Video"], + ["kaboodle.com", "Social"], + ["kakao", "Social"], + ["kakao.com", "Social"], + ["kakaocorp.com", "Social"], + ["kaneva", "Social"], + ["kaneva.com", "Social"], + ["kin.naver.com", "Social"], + ["kvasir", "Search"], + ["l.facebook.com", "Social"], + ["l.instagram.com", "Social"], + ["l.messenger.com", "Social"], + ["last.fm", "Social"], + ["lens.google.com", "Search"], + ["librarything", "Social"], + ["librarything.com", "Social"], + ["lifestream.aol.com", "Social"], + ["line", "Social"], + ["line.me", "Social"], + ["linkedin", "Social"], + ["linkedin.com", "Social"], + ["listal", "Social"], + ["listal.com", "Social"], + ["listography", "Social"], + ["listography.com", "Social"], + ["lite.qwant.com", "Search"], + ["livedoor.com", "Social"], + ["livedoorblog", "Social"], + ["livejournal", "Social"], + ["livejournal.com", "Social"], + ["lm.facebook.com", "Social"], + ["lnkd.in", "Social"], + ["lycos", "Search"], + ["m.alibaba.com", "Shopping"], + ["m.baidu.com", "Search"], + ["m.blog.naver.com", "Social"], + ["m.cafe.naver.com", "Social"], + ["m.facebook.com", "Social"], + ["m.kin.naver.com", "Social"], + ["m.naver.com", "Search"], + ["m.search.naver.com", "Search"], + ["m.shopping.naver.com", "Shopping"], + ["m.sogou.com", "Search"], + ["m.twitch.tv", "Video"], + ["m.vk.com", "Social"], + ["m.yelp.com", "Social"], + ["m.youtube.com", "Video"], + ["mail.rambler.ru", "Search"], + ["mail.yandex.ru", "Search"], + ["malaysia.search.yahoo.com", "Search"], + ["mbga.jp", "Social"], + ["medium.com", "Social"], + ["meetin.org", "Social"], + ["meetup", "Social"], + ["meetup.com", "Social"], + ["meinvz.net", "Social"], + ["meneame.net", "Social"], + ["menuism.com", "Social"], + ["mercadolibre", "Shopping"], + ["mercadolibre.com", "Shopping"], + ["mercadolibre.com.ar", "Shopping"], + ["mercadolibre.com.mx", "Shopping"], + ["message.alibaba.com", "Shopping"], + ["messages.google.com", "Social"], + ["messages.yahoo.co.jp", "Social"], + ["messenger", "Social"], + ["messenger.com", "Social"], + ["mix.com", "Social"], + ["mixi.jp", "Social"], + ["mobile.facebook.com", "Social"], + ["mocospace", "Social"], + ["mocospace.com", "Social"], + ["mouthshut", "Social"], + ["mouthshut.com", "Social"], + ["movabletype", "Social"], + ["movabletype.com", "Social"], + ["msearch.shopping.naver.com", "Shopping"], + ["msn", "Search"], + ["msn.com", "Search"], + ["mubi", "Social"], + ["mubi.com", "Social"], + ["music.youtube.com", "Video"], + ["mx.search.yahoo.com", "Search"], + ["my.opera.com", "Social"], + ["myanimelist.net", "Social"], + ["myheritage", "Social"], + ["myheritage.com", "Social"], + ["mylife", "Social"], + ["mylife.com", "Social"], + ["mymodernmet", "Social"], + ["mymodernmet.com", "Social"], + ["myspace", "Social"], + ["myspace.com", "Social"], + ["najdi", "Search"], + ["naver", "Search"], + ["naver.com", "Search"], + ["netflix", "Video"], + ["netflix.com", "Video"], + ["netvibes", "Social"], + ["netvibes.com", "Social"], + ["news.google.com", "Search"], + ["news.ycombinator.com", "Social"], + ["newsshowcase", "Social"], + ["nexopia", "Social"], + ["ngopost.org", "Social"], + ["niconico", "Social"], + ["nicovideo.jp", "Social"], + ["nightlifelink", "Social"], + ["nightlifelink.com", "Social"], + ["ning", "Social"], + ["ning.com", "Social"], + ["nl.pinterest.com", "Social"], + ["nl.search.yahoo.com", "Search"], + ["nl.shopping.net", "Shopping"], + ["no.search.yahoo.com", "Search"], + ["no.shopping.net", "Shopping"], + ["ntp.msn.com", "Search"], + ["nz.search.yahoo.com", "Search"], + ["odnoklassniki.ru", "Social"], + ["odnoklassniki.ua", "Social"], + ["offer.alibaba.com", "Shopping"], + ["okwave.jp", "Social"], + ["old.reddit.com", "Social"], + ["one.walmart.com", "Shopping"], + ["onet", "Search"], + ["onet.pl", "Search"], + ["oneworldgroup.org", "Social"], + ["onstartups", "Social"], + ["onstartups.com", "Social"], + ["opendiary", "Social"], + ["opendiary.com", "Social"], + ["order.shopping.yahoo.co.jp", "Shopping"], + ["oshiete.goo.ne.jp", "Social"], + ["out.reddit.com", "Social"], + ["over-blog.com", "Social"], + ["overblog.com", "Social"], + ["paper.li", "Social"], + ["partners.shopify.com", "Shopping"], + ["partyflock.nl", "Social"], + ["pe.search.yahoo.com", "Search"], + ["ph.search.yahoo.com", "Search"], + ["photobucket", "Social"], + ["photobucket.com", "Social"], + ["pinboard", "Social"], + ["pinboard.in", "Social"], + ["pingsta", "Social"], + ["pingsta.com", "Social"], + ["pinterest", "Social"], + ["pinterest.at", "Social"], + ["pinterest.ca", "Social"], + ["pinterest.ch", "Social"], + ["pinterest.cl", "Social"], + ["pinterest.co.kr", "Social"], + ["pinterest.co.uk", "Social"], + ["pinterest.com", "Social"], + ["pinterest.com.au", "Social"], + ["pinterest.com.mx", "Social"], + ["pinterest.de", "Social"], + ["pinterest.es", "Social"], + ["pinterest.fr", "Social"], + ["pinterest.it", "Social"], + ["pinterest.jp", "Social"], + ["pinterest.nz", "Social"], + ["pinterest.ph", "Social"], + ["pinterest.pt", "Social"], + ["pinterest.ru", "Social"], + ["pinterest.se", "Social"], + ["pixiv.net", "Social"], + ["pl.pinterest.com", "Social"], + ["pl.search.yahoo.com", "Search"], + ["play.google.com", "Search"], + ["playahead.se", "Social"], + ["player.twitch.tv", "Video"], + ["player.vimeo.com", "Video"], + ["plurk", "Social"], + ["plurk.com", "Social"], + ["plus.google.com", "Social"], + ["plus.url.google.com", "Social"], + ["pocket.co", "Social"], + ["posterous", "Social"], + ["posterous.com", "Social"], + ["pro.homeadvisor.com", "Social"], + ["pulse.yahoo.com", "Social"], + ["qapacity", "Social"], + ["qapacity.com", "Social"], + ["quechup", "Social"], + ["quechup.com", "Social"], + ["quora", "Social"], + ["quora.com", "Social"], + ["qwant", "Search"], + ["qwant.com", "Search"], + ["qzone.qq.com", "Social"], + ["rakuten", "Search"], + ["rakuten.co.jp", "Search"], + ["rambler", "Search"], + ["rambler.ru", "Search"], + ["ravelry", "Social"], + ["ravelry.com", "Social"], + ["reddit", "Social"], + ["reddit.com", "Social"], + ["redux", "Social"], + ["redux.com", "Social"], + ["renren", "Social"], + ["renren.com", "Social"], + ["researchgate.net", "Social"], + ["reunion", "Social"], + ["reunion.com", "Social"], + ["reverbnation", "Social"], + ["reverbnation.com", "Social"], + ["rtl.de", "Social"], + ["ryze", "Social"], + ["ryze.com", "Social"], + ["s3.amazonaws.com", "Shopping"], + ["salespider", "Social"], + ["salespider.com", "Social"], + ["scoop.it", "Social"], + ["screenrant", "Social"], + ["screenrant.com", "Social"], + ["scribd", "Social"], + ["scribd.com", "Social"], + ["scvngr", "Social"], + ["scvngr.com", "Social"], + ["se.search.yahoo.com", "Search"], + ["se.shopping.net", "Shopping"], + ["search-results", "Search"], + ["search.aol.co.uk", "Search"], + ["search.aol.com", "Search"], + ["search.google.com", "Search"], + ["search.smt.docomo.ne.jp", "Search"], + ["search.ukr.net", "Search"], + ["secondlife", "Social"], + ["secondlife.com", "Social"], + ["secureurl.ukr.net", "Search"], + ["serverfault", "Social"], + ["serverfault.com", "Social"], + ["seznam", "Search"], + ["seznam.cz", "Search"], + ["sg.search.yahoo.com", "Search"], + ["shareit", "Social"], + ["sharethis", "Social"], + ["sharethis.com", "Social"], + ["shop.app", "Shopping"], + ["shopify", "Shopping"], + ["shopify.com", "Shopping"], + ["shopping.naver.com", "Shopping"], + ["shopping.yahoo.co.jp", "Shopping"], + ["shopping.yahoo.com", "Shopping"], + ["shopzilla", "Shopping"], + ["shopzilla.com", "Shopping"], + ["shvoong.com", "Social"], + ["simplycodes.com", "Shopping"], + ["sites.google.com", "Social"], + ["skype", "Social"], + ["skyrock", "Social"], + ["skyrock.com", "Social"], + ["slashdot.org", "Social"], + ["slideshare.net", "Social"], + ["smartnews.com", "Social"], + ["snapchat", "Social"], + ["snapchat.com", "Social"], + ["so.com", "Search"], + ["social", "Social"], + ["sociallife.com.br", "Social"], + ["socialvibe", "Social"], + ["socialvibe.com", "Social"], + ["sogou", "Search"], + ["sogou.com", "Search"], + ["sp-web.search.auone.jp", "Search"], + ["spaces.live.com", "Social"], + ["spoke", "Social"], + ["spoke.com", "Social"], + ["spruz", "Social"], + ["spruz.com", "Social"], + ["ssense.com", "Social"], + ["stackapps", "Social"], + ["stackapps.com", "Social"], + ["stackexchange", "Social"], + ["stackexchange.com", "Social"], + ["stackoverflow", "Social"], + ["stackoverflow.com", "Social"], + ["stardoll.com", "Social"], + ["startsiden", "Search"], + ["startsiden.no", "Search"], + ["stickam", "Social"], + ["stickam.com", "Social"], + ["store.shopping.yahoo.co.jp", "Shopping"], + ["stripe", "Shopping"], + ["stripe.com", "Shopping"], + ["studivz.net", "Social"], + ["suche.aol.de", "Search"], + ["suomi24.fi", "Social"], + ["superuser", "Social"], + ["superuser.com", "Social"], + ["sweeva", "Social"], + ["sweeva.com", "Social"], + ["t.co", "Social"], + ["t.me", "Social"], + ["tagged", "Social"], + ["tagged.com", "Social"], + ["taggedmail", "Social"], + ["taggedmail.com", "Social"], + ["talkbiznow", "Social"], + ["talkbiznow.com", "Social"], + ["taringa.net", "Social"], + ["techmeme", "Social"], + ["techmeme.com", "Social"], + ["ted", "Video"], + ["ted.com", "Video"], + ["tencent", "Social"], + ["tencent.com", "Social"], + ["terra", "Search"], + ["th.search.yahoo.com", "Search"], + ["tiktok", "Social"], + ["tiktok.com", "Social"], + ["tinyurl", "Social"], + ["tinyurl.com", "Social"], + ["toolbox", "Social"], + ["toolbox.com", "Social"], + ["touch.facebook.com", "Social"], + ["tr.pinterest.com", "Social"], + ["tr.search.yahoo.com", "Search"], + ["travellerspoint", "Social"], + ["travellerspoint.com", "Social"], + ["tripadvisor", "Social"], + ["tripadvisor.com", "Social"], + ["trombi", "Social"], + ["trombi.com", "Social"], + ["trustpilot", "Social"], + ["tudou", "Social"], + ["tudou.com", "Social"], + ["tuenti", "Social"], + ["tuenti.com", "Social"], + ["tumblr", "Social"], + ["tumblr.com", "Social"], + ["tut.by", "Search"], + ["tw.search.yahoo.com", "Search"], + ["tweetdeck", "Social"], + ["tweetdeck.com", "Social"], + ["twitch", "Video"], + ["twitch.tv", "Video"], + ["twitter", "Social"], + ["twitter.com", "Social"], + ["twoo.com", "Social"], + ["typepad", "Social"], + ["typepad.com", "Social"], + ["uk.search.yahoo.com", "Search"], + ["uk.shopping.net", "Shopping"], + ["ukr", "Search"], + ["unblog.fr", "Social"], + ["urbanspoon.com", "Social"], + ["us.search.yahoo.com", "Search"], + ["ushareit.com", "Social"], + ["ushi.cn", "Social"], + ["utreon", "Video"], + ["utreon.com", "Video"], + ["vampirefreaks", "Social"], + ["vampirefreaks.com", "Social"], + ["vampirerave", "Social"], + ["vampirerave.com", "Social"], + ["veoh", "Video"], + ["veoh.com", "Video"], + ["vg.no", "Social"], + ["viadeo.journaldunet.com", "Video"], + ["video.ibm.com", "Social"], + ["vimeo", "Video"], + ["vimeo.com", "Video"], + ["virgilio", "Search"], + ["vk.com", "Social"], + ["vkontakte.ru", "Social"], + ["vn.search.yahoo.com", "Search"], + ["wakoopa", "Social"], + ["wakoopa.com", "Social"], + ["walmart", "Shopping"], + ["walmart.com", "Shopping"], + ["wap.sogou.com", "Search"], + ["wattpad", "Social"], + ["wattpad.com", "Social"], + ["web.facebook.com", "Social"], + ["web.skype.com", "Social"], + ["webmaster.yandex.ru", "Search"], + ["websearch.rakuten.co.jp", "Search"], + ["webshots", "Social"], + ["webshots.com", "Social"], + ["wechat", "Social"], + ["wechat.com", "Social"], + ["weebly", "Social"], + ["weebly.com", "Social"], + ["weibo", "Social"], + ["weibo.com", "Social"], + ["wer-weiss-was.de", "Social"], + ["weread", "Social"], + ["weread.com", "Social"], + ["whatsapp", "Social"], + ["whatsapp.com", "Social"], + ["wiki.answers.com", "Social"], + ["wikihow.com", "Social"], + ["wikitravel.org", "Social"], + ["wistia", "Video"], + ["wistia.com", "Video"], + ["woot.com", "Social"], + ["wordpress", "Social"], + ["wordpress.com", "Social"], + ["wordpress.org", "Social"], + ["xanga", "Social"], + ["xanga.com", "Social"], + ["xing", "Social"], + ["xing.com", "Social"], + ["yahoo", "Search"], + ["yahoo-mbga.jp", "Social"], + ["yahoo.co.jp", "Search"], + ["yahoo.com", "Search"], + ["yammer", "Social"], + ["yammer.com", "Social"], + ["yandex", "Search"], + ["yandex.by", "Search"], + ["yandex.com", "Search"], + ["yandex.com.tr", "Search"], + ["yandex.fr", "Search"], + ["yandex.kz", "Search"], + ["yandex.ru", "Search"], + ["yandex.ua", "Search"], + ["yandex.uz", "Search"], + ["yelp", "Social"], + ["yelp.co.uk", "Social"], + ["yelp.com", "Social"], + ["youku", "Video"], + ["youku.com", "Video"], + ["youroom.in", "Social"], + ["youtube", "Video"], + ["youtube.com", "Video"], + ["za.pinterest.com", "Social"], + ["zalo", "Social"], + ["zen.yandex.ru", "Search"], + ["zoo.gr", "Social"], + ["zooppa", "Social"], + ["zooppa.com", "Social"], + ["google.com", "Search"], + ["google.ad", "Search"], + ["google.ae", "Search"], + ["google.com.af", "Search"], + ["google.com.ag", "Search"], + ["google.al", "Search"], + ["google.am", "Search"], + ["google.co.ao", "Search"], + ["google.com.ar", "Search"], + ["google.as", "Search"], + ["google.at", "Search"], + ["google.com.au", "Search"], + ["google.az", "Search"], + ["google.ba", "Search"], + ["google.com.bd", "Search"], + ["google.be", "Search"], + ["google.bf", "Search"], + ["google.bg", "Search"], + ["google.com.bh", "Search"], + ["google.bi", "Search"], + ["google.bj", "Search"], + ["google.com.bn", "Search"], + ["google.com.bo", "Search"], + ["google.com.br", "Search"], + ["google.bs", "Search"], + ["google.bt", "Search"], + ["google.co.bw", "Search"], + ["google.by", "Search"], + ["google.com.bz", "Search"], + ["google.ca", "Search"], + ["google.cd", "Search"], + ["google.cf", "Search"], + ["google.cg", "Search"], + ["google.ch", "Search"], + ["google.ci", "Search"], + ["google.co.ck", "Search"], + ["google.cl", "Search"], + ["google.cm", "Search"], + ["google.cn", "Search"], + ["google.com.co", "Search"], + ["google.co.cr", "Search"], + ["google.com.cu", "Search"], + ["google.cv", "Search"], + ["google.com.cy", "Search"], + ["google.cz", "Search"], + ["google.de", "Search"], + ["google.dj", "Search"], + ["google.dk", "Search"], + ["google.dm", "Search"], + ["google.com.do", "Search"], + ["google.dz", "Search"], + ["google.com.ec", "Search"], + ["google.ee", "Search"], + ["google.com.eg", "Search"], + ["google.es", "Search"], + ["google.com.et", "Search"], + ["google.fi", "Search"], + ["google.com.fj", "Search"], + ["google.fm", "Search"], + ["google.fr", "Search"], + ["google.ga", "Search"], + ["google.ge", "Search"], + ["google.gg", "Search"], + ["google.com.gh", "Search"], + ["google.com.gi", "Search"], + ["google.gl", "Search"], + ["google.gm", "Search"], + ["google.gr", "Search"], + ["google.com.gt", "Search"], + ["google.gy", "Search"], + ["google.com.hk", "Search"], + ["google.hn", "Search"], + ["google.hr", "Search"], + ["google.ht", "Search"], + ["google.hu", "Search"], + ["google.co.id", "Search"], + ["google.ie", "Search"], + ["google.co.il", "Search"], + ["google.im", "Search"], + ["google.co.in", "Search"], + ["google.iq", "Search"], + ["google.is", "Search"], + ["google.it", "Search"], + ["google.je", "Search"], + ["google.com.jm", "Search"], + ["google.jo", "Search"], + ["google.co.jp", "Search"], + ["google.co.ke", "Search"], + ["google.com.kh", "Search"], + ["google.ki", "Search"], + ["google.kg", "Search"], + ["google.co.kr", "Search"], + ["google.com.kw", "Search"], + ["google.kz", "Search"], + ["google.la", "Search"], + ["google.com.lb", "Search"], + ["google.li", "Search"], + ["google.lk", "Search"], + ["google.co.ls", "Search"], + ["google.lt", "Search"], + ["google.lu", "Search"], + ["google.lv", "Search"], + ["google.com.ly", "Search"], + ["google.co.ma", "Search"], + ["google.md", "Search"], + ["google.me", "Search"], + ["google.mg", "Search"], + ["google.mk", "Search"], + ["google.ml", "Search"], + ["google.com.mm", "Search"], + ["google.mn", "Search"], + ["google.com.mt", "Search"], + ["google.mu", "Search"], + ["google.mv", "Search"], + ["google.mw", "Search"], + ["google.com.mx", "Search"], + ["google.com.my", "Search"], + ["google.co.mz", "Search"], + ["google.com.na", "Search"], + ["google.com.ng", "Search"], + ["google.com.ni", "Search"], + ["google.ne", "Search"], + ["google.nl", "Search"], + ["google.no", "Search"], + ["google.com.np", "Search"], + ["google.nr", "Search"], + ["google.nu", "Search"], + ["google.co.nz", "Search"], + ["google.com.om", "Search"], + ["google.com.pa", "Search"], + ["google.com.pe", "Search"], + ["google.com.pg", "Search"], + ["google.com.ph", "Search"], + ["google.com.pk", "Search"], + ["google.pl", "Search"], + ["google.pn", "Search"], + ["google.com.pr", "Search"], + ["google.ps", "Search"], + ["google.pt", "Search"], + ["google.com.py", "Search"], + ["google.com.qa", "Search"], + ["google.ro", "Search"], + ["google.ru", "Search"], + ["google.rw", "Search"], + ["google.com.sa", "Search"], + ["google.com.sb", "Search"], + ["google.sc", "Search"], + ["google.se", "Search"], + ["google.com.sg", "Search"], + ["google.sh", "Search"], + ["google.si", "Search"], + ["google.sk", "Search"], + ["google.com.sl", "Search"], + ["google.sn", "Search"], + ["google.so", "Search"], + ["google.sm", "Search"], + ["google.sr", "Search"], + ["google.st", "Search"], + ["google.com.sv", "Search"], + ["google.td", "Search"], + ["google.tg", "Search"], + ["google.co.th", "Search"], + ["google.com.tj", "Search"], + ["google.tl", "Search"], + ["google.tm", "Search"], + ["google.tn", "Search"], + ["google.to", "Search"], + ["google.com.tr", "Search"], + ["google.tt", "Search"], + ["google.com.tw", "Search"], + ["google.co.tz", "Search"], + ["google.com.ua", "Search"], + ["google.co.ug", "Search"], + ["google.co.uk", "Search"], + ["google.com.uy", "Search"], + ["google.co.uz", "Search"], + ["google.com.vc", "Search"], + ["google.co.ve", "Search"], + ["google.co.vi", "Search"], + ["google.com.vn", "Search"], + ["google.vu", "Search"], + ["google.ws", "Search"], + ["google.rs", "Search"], + ["google.co.za", "Search"], + ["google.co.zm", "Search"], + ["google.co.zw", "Search"], + ["google.cat", "Search"] +] diff --git a/posthog/models/channel_type/sql.py b/posthog/models/channel_type/sql.py new file mode 100644 index 00000000000000..9457d054b8db3b --- /dev/null +++ b/posthog/models/channel_type/sql.py @@ -0,0 +1,46 @@ +import json +import os + +from posthog.settings import CLICKHOUSE_CLUSTER + +GA4_CHANNEL_DEFINITION_TABLE_SQL = f""" +CREATE TABLE IF NOT EXISTS ga4_channel_definition ON CLUSTER {CLICKHOUSE_CLUSTER} ( + domain String, + type String +) ENGINE = MergeTree() +ORDER BY domain; +""" + +DROP_GA4_CHANNEL_DEFINITION_TABLE_SQL = f"DROP TABLE IF EXISTS ga4_channel_definition ON CLUSTER '{CLICKHOUSE_CLUSTER}'" + +TRUNCATE_GA4_CHANNEL_DEFINITION_TABLE_SQL = ( + lambda: f"TRUNCATE TABLE IF EXISTS ga4_channel_definition ON CLUSTER '{CLICKHOUSE_CLUSTER}'" +) + +with open(os.path.join(os.path.dirname(__file__), "ga4_channel_definitions.json"), "r") as f: + GA_CHANNEL_DEFINITIONS = json.loads(f.read()) + +GA_CHANNEL_DEFINITIONS_DATA_SQL = f""" +INSERT INTO ga4_channel_definition (domain, type) VALUES +{ +''', +'''.join(map(lambda x: f"('{x[0]}', '{x[1]}')", GA_CHANNEL_DEFINITIONS))}, +; +""" + +# Use COMPLEX_KEY_HASHED, even though we only have one key, because it's the only way to get a dictionary to work with +# a primary key that's a string +GA4_CHANNEL_DEFINITION_DICTIONARY_SQL = """ +CREATE DICTIONARY IF NOT EXISTS ga4_channel_definition_dict ( + domain String, + type String +) +PRIMARY KEY domain +SOURCE(CLICKHOUSE(TABLE 'ga4_channel_definition')) +LIFETIME(MIN 1 MAX 3600) +LAYOUT(COMPLEX_KEY_HASHED()) +""" + +DROP_GA4_CHANNEL_DEFINITION_DICTIONARY_SQL = ( + f"DROP DICTIONARY IF EXISTS ga4_channel_definition_dict ON CLUSTER '{CLICKHOUSE_CLUSTER}'" +) diff --git a/posthog/test/base.py b/posthog/test/base.py index a9c941f50b5723..1474abacafd0d7 100644 --- a/posthog/test/base.py +++ b/posthog/test/base.py @@ -34,6 +34,13 @@ is_cloud, ) from posthog.models import Dashboard, DashboardTile, Insight, Organization, Team, User +from posthog.models.channel_type.sql import ( + GA4_CHANNEL_DEFINITION_TABLE_SQL, + DROP_GA4_CHANNEL_DEFINITION_TABLE_SQL, + DROP_GA4_CHANNEL_DEFINITION_DICTIONARY_SQL, + GA4_CHANNEL_DEFINITION_DICTIONARY_SQL, + GA_CHANNEL_DEFINITIONS_DATA_SQL, +) from posthog.models.cohort.sql import TRUNCATE_COHORTPEOPLE_TABLE_SQL from posthog.models.event.sql import ( DISTRIBUTED_EVENTS_TABLE_SQL, @@ -843,6 +850,8 @@ def setUp(self): TRUNCATE_COHORTPEOPLE_TABLE_SQL, TRUNCATE_PERSON_STATIC_COHORT_TABLE_SQL, TRUNCATE_PLUGIN_LOG_ENTRIES_TABLE_SQL, + DROP_GA4_CHANNEL_DEFINITION_TABLE_SQL, + DROP_GA4_CHANNEL_DEFINITION_DICTIONARY_SQL, ] ) run_clickhouse_statement_in_parallel( @@ -851,6 +860,8 @@ def setUp(self): PERSONS_TABLE_SQL(), SESSION_RECORDING_EVENTS_TABLE_SQL(), SESSION_REPLAY_EVENTS_TABLE_SQL(), + GA4_CHANNEL_DEFINITION_TABLE_SQL, + GA4_CHANNEL_DEFINITION_DICTIONARY_SQL, ] ) run_clickhouse_statement_in_parallel( @@ -858,6 +869,7 @@ def setUp(self): DISTRIBUTED_EVENTS_TABLE_SQL(), DISTRIBUTED_SESSION_RECORDING_EVENTS_TABLE_SQL(), DISTRIBUTED_SESSION_REPLAY_EVENTS_TABLE_SQL(), + GA_CHANNEL_DEFINITIONS_DATA_SQL, ] ) @@ -871,6 +883,8 @@ def tearDown(self): TRUNCATE_PERSON_DISTINCT_ID_TABLE_SQL, DROP_SESSION_RECORDING_EVENTS_TABLE_SQL(), DROP_SESSION_REPLAY_EVENTS_TABLE_SQL(), + DROP_GA4_CHANNEL_DEFINITION_TABLE_SQL, + DROP_GA4_CHANNEL_DEFINITION_DICTIONARY_SQL, ] ) @@ -880,6 +894,8 @@ def tearDown(self): PERSONS_TABLE_SQL(), SESSION_RECORDING_EVENTS_TABLE_SQL(), SESSION_REPLAY_EVENTS_TABLE_SQL(), + GA4_CHANNEL_DEFINITION_TABLE_SQL, + GA4_CHANNEL_DEFINITION_DICTIONARY_SQL, ] ) run_clickhouse_statement_in_parallel( @@ -887,6 +903,7 @@ def tearDown(self): DISTRIBUTED_EVENTS_TABLE_SQL(), DISTRIBUTED_SESSION_RECORDING_EVENTS_TABLE_SQL(), DISTRIBUTED_SESSION_REPLAY_EVENTS_TABLE_SQL(), + GA_CHANNEL_DEFINITIONS_DATA_SQL, ] ) diff --git a/test.txt b/test.txt new file mode 100644 index 00000000000000..d4f40fb195108a --- /dev/null +++ b/test.txt @@ -0,0 +1,54 @@ +360.cn SOURCE_CATEGORY_SEARCH + 43things SOURCE_CATEGORY_SOCIAL 43things.com SOURCE_CATEGORY_SOCIAL 51.com SOURCE_CATEGORY_SOCIAL 5ch.net SOURCE_CATEGORY_SOCIAL Google Shopping SOURCE_CATEGORY_SHOPPING Hatena SOURCE_CATEGORY_SOCIAL IGShopping SOURCE_CATEGORY_SHOPPING ImageShack SOURCE_CATEGORY_SOCIAL aax-us-east.amazon-adsystem.com SOURCE_CATEGORY_SHOPPING aax.amazon-adsystem.com SOURCE_CATEGORY_SHOPPING academia.edu SOURCE_CATEGORY_SOCIAL activerain SOURCE_CATEGORY_SOCIAL activerain.com SOURCE_CATEGORY_SOCIAL activeworlds SOURCE_CATEGORY_SOCIAL activeworlds.com SOURCE_CATEGORY_SOCIAL addthis SOURCE_CATEGORY_SOCIAL addthis.com SOURCE_CATEGORY_SOCIAL airg.ca SOURCE_CATEGORY_SOCIAL alibaba SOURCE_CATEGORY_SHOPPING alibaba.com SOURCE_CATEGORY_SHOPPING alice SOURCE_CATEGORY_SEARCH allnurses.com SOURCE_CATEGORY_SOCIAL allrecipes.com SOURCE_CATEGORY_SOCIAL alumniclass SOURCE_CATEGORY_SOCIAL alumniclass.com SOURCE_CATEGORY_SOCIAL amazon SOURCE_CATEGORY_SHOPPING amazon.co.uk SOURCE_CATEGORY_SHOPPING amazon.com SOURCE_CATEGORY_SHOPPING ameba.jp SOURCE_CATEGORY_SOCIAL ameblo.jp SOURCE_CATEGORY_SOCIAL +americantowns SOURCE_CATEGORY_SOCIAL americantowns.com SOURCE_CATEGORY_SOCIAL amp.reddit.com SOURCE_CATEGORY_SOCIAL ancestry.com SOURCE_CATEGORY_SOCIAL anobii SOURCE_CATEGORY_SOCIAL anobii.com SOURCE_CATEGORY_SOCIAL answerbag SOURCE_CATEGORY_SOCIAL answerbag.com SOURCE_CATEGORY_SOCIAL answers.yahoo.com SOURCE_CATEGORY_SOCIAL aol SOURCE_CATEGORY_SEARCH +aolanswers SOURCE_CATEGORY_SOCIAL aolanswers.com SOURCE_CATEGORY_SOCIAL apps.facebook.com SOURCE_CATEGORY_SOCIAL apps.shopify.com SOURCE_CATEGORY_SHOPPING +ar.pinterest.com SOURCE_CATEGORY_SOCIAL ar.search.yahoo.com SOURCE_CATEGORY_SEARCH artstation.com SOURCE_CATEGORY_SOCIAL ask SOURCE_CATEGORY_SEARCH askubuntu SOURCE_CATEGORY_SOCIAL askubuntu.com SOURCE_CATEGORY_SOCIAL asmallworld.com SOURCE_CATEGORY_SOCIAL at.search.yahoo.com SOURCE_CATEGORY_SEARCH athlinks SOURCE_CATEGORY_SOCIAL athlinks.com SOURCE_CATEGORY_SOCIAL au.search.yahoo.com SOURCE_CATEGORY_SEARCH auone SOURCE_CATEGORY_SEARCH avg SOURCE_CATEGORY_SEARCH away.vk.com SOURCE_CATEGORY_SOCIAL awe.sm SOURCE_CATEGORY_SOCIAL b.hatena.ne.jp SOURCE_CATEGORY_SOCIAL baby-gaga SOURCE_CATEGORY_SOCIAL +baby-gaga.com SOURCE_CATEGORY_SOCIAL babyblog.ru SOURCE_CATEGORY_SOCIAL babylon SOURCE_CATEGORY_SEARCH badoo SOURCE_CATEGORY_SOCIAL badoo.com SOURCE_CATEGORY_SOCIAL baidu SOURCE_CATEGORY_SEARCH bebo SOURCE_CATEGORY_SOCIAL bebo.com SOURCE_CATEGORY_SOCIAL beforeitsnews SOURCE_CATEGORY_SOCIAL beforeitsnews.com SOURCE_CATEGORY_SOCIAL bharatstudent SOURCE_CATEGORY_SOCIAL bharatstudent.com SOURCE_CATEGORY_SOCIAL biglobe SOURCE_CATEGORY_SEARCH biglobe.co.jp SOURCE_CATEGORY_SEARCH biglobe.ne.jp SOURCE_CATEGORY_SEARCH biip.no SOURCE_CATEGORY_SOCIAL bing SOURCE_CATEGORY_SEARCH biswap.org SOURCE_CATEGORY_SOCIAL bit.ly SOURCE_CATEGORY_SOCIAL blackcareernetwork.com SOURCE_CATEGORY_SOCIAL blackplanet SOURCE_CATEGORY_SOCIAL blackplanet.com SOURCE_CATEGORY_SOCIAL blip.fm SOURCE_CATEGORY_SOCIAL blog.com SOURCE_CATEGORY_SOCIAL blog.feedspot.com SOURCE_CATEGORY_SOCIAL blog.goo.ne.jp SOURCE_CATEGORY_SOCIAL blog.naver.com SOURCE_CATEGORY_SOCIAL blog.twitch.tv SOURCE_CATEGORY_VIDEO blog.yahoo.co.jp SOURCE_CATEGORY_SOCIAL blogg.no SOURCE_CATEGORY_SOCIAL bloggang.com SOURCE_CATEGORY_SOCIAL +blogger SOURCE_CATEGORY_SOCIAL blogger.com SOURCE_CATEGORY_SOCIAL blogher SOURCE_CATEGORY_SOCIAL blogher.com SOURCE_CATEGORY_SOCIAL bloglines SOURCE_CATEGORY_SOCIAL bloglines.com SOURCE_CATEGORY_SOCIAL blogs.com SOURCE_CATEGORY_SOCIAL blogsome SOURCE_CATEGORY_SOCIAL blogsome.com SOURCE_CATEGORY_SOCIAL blogspot SOURCE_CATEGORY_SOCIAL blogspot.com SOURCE_CATEGORY_SOCIAL blogster SOURCE_CATEGORY_SOCIAL blogster.com SOURCE_CATEGORY_SOCIAL blurtit SOURCE_CATEGORY_SOCIAL blurtit.com SOURCE_CATEGORY_SOCIAL bookmarks.yahoo.co.jp SOURCE_CATEGORY_SOCIAL bookmarks.yahoo.com SOURCE_CATEGORY_SOCIAL br.pinterest.com SOURCE_CATEGORY_SOCIAL br.search.yahoo.com SOURCE_CATEGORY_SEARCH +brightkite SOURCE_CATEGORY_SOCIAL brightkite.com SOURCE_CATEGORY_SOCIAL brizzly SOURCE_CATEGORY_SOCIAL brizzly.com SOURCE_CATEGORY_SOCIAL business.facebook.com SOURCE_CATEGORY_SOCIAL buzzfeed SOURCE_CATEGORY_SOCIAL buzzfeed.com SOURCE_CATEGORY_SOCIAL buzznet SOURCE_CATEGORY_SOCIAL buzznet.com SOURCE_CATEGORY_SOCIAL ca.search.yahoo.com SOURCE_CATEGORY_SEARCH +cafe.naver.com SOURCE_CATEGORY_SOCIAL cafemom SOURCE_CATEGORY_SOCIAL +cafemom.com SOURCE_CATEGORY_SOCIAL camospace SOURCE_CATEGORY_SOCIAL camospace.com SOURCE_CATEGORY_SOCIAL canalblog.com SOURCE_CATEGORY_SOCIAL care.com SOURCE_CATEGORY_SOCIAL care2 SOURCE_CATEGORY_SOCIAL care2.com SOURCE_CATEGORY_SOCIAL caringbridge.org SOURCE_CATEGORY_SOCIAL catster SOURCE_CATEGORY_SOCIAL catster.com SOURCE_CATEGORY_SOCIAL cbnt.io SOURCE_CATEGORY_SOCIAL cellufun SOURCE_CATEGORY_SOCIAL cellufun.com SOURCE_CATEGORY_SOCIAL centerblog.net SOURCE_CATEGORY_SOCIAL centrum.cz SOURCE_CATEGORY_SEARCH +ch.search.yahoo.com SOURCE_CATEGORY_SEARCH chat.zalo.me SOURCE_CATEGORY_SOCIAL checkout.shopify.com SOURCE_CATEGORY_SHOPPING checkout.stripe.com SOURCE_CATEGORY_SHOPPING chegg.com SOURCE_CATEGORY_SOCIAL chicagonow SOURCE_CATEGORY_SOCIAL chicagonow.com SOURCE_CATEGORY_SOCIAL chiebukuro.yahoo.co.jp SOURCE_CATEGORY_SOCIAL cl.search.yahoo.com SOURCE_CATEGORY_SEARCH classmates SOURCE_CATEGORY_SOCIAL classmates.com SOURCE_CATEGORY_SOCIAL classquest SOURCE_CATEGORY_SOCIAL classquest.com SOURCE_CATEGORY_SOCIAL cn.bing.com SOURCE_CATEGORY_SEARCH cnn SOURCE_CATEGORY_SEARCH co.pinterest.com SOURCE_CATEGORY_SOCIAL +co.search.yahoo.com SOURCE_CATEGORY_SEARCH cocolog-nifty SOURCE_CATEGORY_SOCIAL cocolog-nifty.com SOURCE_CATEGORY_SOCIAL comcast SOURCE_CATEGORY_SEARCH conduit SOURCE_CATEGORY_SEARCH copainsdavant.linternaute.com SOURCE_CATEGORY_SOCIAL couchsurfing.org SOURCE_CATEGORY_SOCIAL cozycot SOURCE_CATEGORY_SOCIAL cozycot.com SOURCE_CATEGORY_SOCIAL cr.shopping.naver.com SOURCE_CATEGORY_SHOPPING cr2.shopping.naver.com SOURCE_CATEGORY_SHOPPING crackle SOURCE_CATEGORY_VIDEO crackle.com SOURCE_CATEGORY_VIDEO cross.tv SOURCE_CATEGORY_SOCIAL crunchyroll SOURCE_CATEGORY_SOCIAL crunchyroll.com SOURCE_CATEGORY_SOCIAL curiositystream SOURCE_CATEGORY_VIDEO curiositystream.com SOURCE_CATEGORY_VIDEO cyworld SOURCE_CATEGORY_SOCIAL cyworld.com SOURCE_CATEGORY_SOCIAL cz.pinterest.com SOURCE_CATEGORY_SOCIAL d.hatena.ne.jp SOURCE_CATEGORY_SOCIAL d.tube SOURCE_CATEGORY_VIDEO dailymotion SOURCE_CATEGORY_VIDEO dailymotion.com SOURCE_CATEGORY_VIDEO dailystrength.org SOURCE_CATEGORY_SOCIAL dashboard.twitch.tv SOURCE_CATEGORY_VIDEO daum SOURCE_CATEGORY_SEARCH daum.net SOURCE_CATEGORY_SEARCH de.search.yahoo.com SOURCE_CATEGORY_SEARCH deluxe.com SOURCE_CATEGORY_SOCIAL +deviantart SOURCE_CATEGORY_SOCIAL deviantart.com SOURCE_CATEGORY_SOCIAL dianping SOURCE_CATEGORY_SOCIAL dianping.com SOURCE_CATEGORY_SOCIAL digg SOURCE_CATEGORY_SOCIAL digg.com SOURCE_CATEGORY_SOCIAL diigo SOURCE_CATEGORY_SOCIAL diigo.com SOURCE_CATEGORY_SOCIAL discover.hubpages.com SOURCE_CATEGORY_SOCIAL disneyplus SOURCE_CATEGORY_VIDEO +disneyplus.com SOURCE_CATEGORY_VIDEO disqus SOURCE_CATEGORY_SOCIAL disqus.com SOURCE_CATEGORY_SOCIAL dk.search.yahoo.com SOURCE_CATEGORY_SEARCH dogpile SOURCE_CATEGORY_SEARCH dogpile.com SOURCE_CATEGORY_SEARCH dogster SOURCE_CATEGORY_SOCIAL dogster.com SOURCE_CATEGORY_SOCIAL dol2day SOURCE_CATEGORY_SOCIAL dol2day.com SOURCE_CATEGORY_SOCIAL doostang SOURCE_CATEGORY_SOCIAL doostang.com SOURCE_CATEGORY_SOCIAL dopplr SOURCE_CATEGORY_SOCIAL dopplr.com SOURCE_CATEGORY_SOCIAL douban SOURCE_CATEGORY_SOCIAL douban.com SOURCE_CATEGORY_SOCIAL draft.blogger.com SOURCE_CATEGORY_SOCIAL draugiem.lv SOURCE_CATEGORY_SOCIAL drugs-forum SOURCE_CATEGORY_SOCIAL drugs-forum.com SOURCE_CATEGORY_SOCIAL duckduckgo SOURCE_CATEGORY_SEARCH +dzone SOURCE_CATEGORY_SOCIAL dzone.com SOURCE_CATEGORY_SOCIAL ebay SOURCE_CATEGORY_SHOPPING ebay.co.uk SOURCE_CATEGORY_SHOPPING ebay.com SOURCE_CATEGORY_SHOPPING ebay.com.au SOURCE_CATEGORY_SHOPPING ebay.de SOURCE_CATEGORY_SHOPPING ecosia.org SOURCE_CATEGORY_SEARCH edublogs.org SOURCE_CATEGORY_SOCIAL elftown SOURCE_CATEGORY_SOCIAL elftown.com SOURCE_CATEGORY_SOCIAL email.seznam.cz SOURCE_CATEGORY_SEARCH eniro SOURCE_CATEGORY_SEARCH epicurious.com SOURCE_CATEGORY_SOCIAL es.search.yahoo.com SOURCE_CATEGORY_SEARCH espanol.search.yahoo.com SOURCE_CATEGORY_SEARCH etsy SOURCE_CATEGORY_SHOPPING etsy.com SOURCE_CATEGORY_SHOPPING everforo.com SOURCE_CATEGORY_SOCIAL exalead.com SOURCE_CATEGORY_SEARCH exblog.jp SOURCE_CATEGORY_SOCIAL excite.com SOURCE_CATEGORY_SEARCH extole SOURCE_CATEGORY_SOCIAL extole.com SOURCE_CATEGORY_SOCIAL facebook SOURCE_CATEGORY_SOCIAL facebook.com SOURCE_CATEGORY_SOCIAL faceparty SOURCE_CATEGORY_SOCIAL faceparty.com SOURCE_CATEGORY_SOCIAL fandom.com SOURCE_CATEGORY_SOCIAL fanpop SOURCE_CATEGORY_SOCIAL fanpop.com SOURCE_CATEGORY_SOCIAL +fark SOURCE_CATEGORY_SOCIAL fark.com SOURCE_CATEGORY_SOCIAL fast.wistia.net SOURCE_CATEGORY_VIDEO fb SOURCE_CATEGORY_SOCIAL fb.me SOURCE_CATEGORY_SOCIAL fc2 SOURCE_CATEGORY_SOCIAL fc2.com SOURCE_CATEGORY_SOCIAL feedspot SOURCE_CATEGORY_SOCIAL feministing SOURCE_CATEGORY_SOCIAL feministing.com SOURCE_CATEGORY_SOCIAL +fi.search.yahoo.com SOURCE_CATEGORY_SEARCH filmaffinity SOURCE_CATEGORY_SOCIAL filmaffinity.com SOURCE_CATEGORY_SOCIAL firmy.cz SOURCE_CATEGORY_SEARCH flickr SOURCE_CATEGORY_SOCIAL flickr.com SOURCE_CATEGORY_SOCIAL flipboard SOURCE_CATEGORY_SOCIAL flipboard.com SOURCE_CATEGORY_SOCIAL folkdirect SOURCE_CATEGORY_SOCIAL folkdirect.com SOURCE_CATEGORY_SOCIAL foodservice SOURCE_CATEGORY_SOCIAL foodservice.com SOURCE_CATEGORY_SOCIAL forums.androidcentral.com SOURCE_CATEGORY_SOCIAL forums.crackberry.com SOURCE_CATEGORY_SOCIAL forums.imore.com SOURCE_CATEGORY_SOCIAL forums.nexopia.com SOURCE_CATEGORY_SOCIAL forums.webosnation.com SOURCE_CATEGORY_SOCIAL forums.wpcentral.com SOURCE_CATEGORY_SOCIAL fotki SOURCE_CATEGORY_SOCIAL fotki.com SOURCE_CATEGORY_SOCIAL fotolog SOURCE_CATEGORY_SOCIAL +fotolog.com SOURCE_CATEGORY_SOCIAL foursquare SOURCE_CATEGORY_SOCIAL foursquare.com SOURCE_CATEGORY_SOCIAL fr.search.yahoo.com SOURCE_CATEGORY_SEARCH +free.facebook.com SOURCE_CATEGORY_SOCIAL friendfeed SOURCE_CATEGORY_SOCIAL friendfeed.com SOURCE_CATEGORY_SOCIAL fruehstueckstreff.org SOURCE_CATEGORY_SOCIAL fubar SOURCE_CATEGORY_SOCIAL fubar.com SOURCE_CATEGORY_SOCIAL gaiaonline SOURCE_CATEGORY_SOCIAL gaiaonline.com SOURCE_CATEGORY_SOCIAL gamerdna SOURCE_CATEGORY_SOCIAL gamerdna.com SOURCE_CATEGORY_SOCIAL gather.com SOURCE_CATEGORY_SOCIAL geni.com SOURCE_CATEGORY_SOCIAL getpocket.com SOURCE_CATEGORY_SOCIAL glassboard SOURCE_CATEGORY_SOCIAL glassboard.com SOURCE_CATEGORY_SOCIAL glassdoor SOURCE_CATEGORY_SOCIAL glassdoor.com SOURCE_CATEGORY_SOCIAL globo SOURCE_CATEGORY_SEARCH +go.mail.ru SOURCE_CATEGORY_SEARCH godtube SOURCE_CATEGORY_SOCIAL godtube.com SOURCE_CATEGORY_SOCIAL goldenline.pl SOURCE_CATEGORY_SOCIAL goldstar SOURCE_CATEGORY_SOCIAL goldstar.com SOURCE_CATEGORY_SOCIAL goo.gl SOURCE_CATEGORY_SOCIAL gooblog SOURCE_CATEGORY_SOCIAL goodreads SOURCE_CATEGORY_SOCIAL +goodreads.com SOURCE_CATEGORY_SOCIAL google SOURCE_CATEGORY_SEARCH google+ SOURCE_CATEGORY_SOCIAL google-play SOURCE_CATEGORY_SEARCH googlegroups.com SOURCE_CATEGORY_SOCIAL googleplus SOURCE_CATEGORY_SOCIAL govloop SOURCE_CATEGORY_SOCIAL govloop.com SOURCE_CATEGORY_SOCIAL gowalla SOURCE_CATEGORY_SOCIAL gowalla.com SOURCE_CATEGORY_SOCIAL gree.jp SOURCE_CATEGORY_SOCIAL groups.google.com SOURCE_CATEGORY_SOCIAL gulli.com SOURCE_CATEGORY_SOCIAL gutefrage.net SOURCE_CATEGORY_SOCIAL habbo SOURCE_CATEGORY_SOCIAL habbo.com SOURCE_CATEGORY_SOCIAL +help.hulu.com SOURCE_CATEGORY_VIDEO help.netflix.com SOURCE_CATEGORY_VIDEO hi5 SOURCE_CATEGORY_SOCIAL hi5.com SOURCE_CATEGORY_SOCIAL hk.search.yahoo.com SOURCE_CATEGORY_SEARCH hootsuite SOURCE_CATEGORY_SOCIAL hootsuite.com SOURCE_CATEGORY_SOCIAL houzz SOURCE_CATEGORY_SOCIAL houzz.com SOURCE_CATEGORY_SOCIAL hoverspot SOURCE_CATEGORY_SOCIAL hoverspot.com SOURCE_CATEGORY_SOCIAL hr.com SOURCE_CATEGORY_SOCIAL hu.pinterest.com SOURCE_CATEGORY_SOCIAL hubculture SOURCE_CATEGORY_SOCIAL hubculture.com SOURCE_CATEGORY_SOCIAL +hubpages.com SOURCE_CATEGORY_SOCIAL hulu SOURCE_CATEGORY_VIDEO hulu.com SOURCE_CATEGORY_VIDEO hyves.net SOURCE_CATEGORY_SOCIAL hyves.nl SOURCE_CATEGORY_SOCIAL ibibo SOURCE_CATEGORY_SOCIAL ibibo.com SOURCE_CATEGORY_SOCIAL id.pinterest.com SOURCE_CATEGORY_SOCIAL id.search.yahoo.com SOURCE_CATEGORY_SEARCH id.twitch.tv SOURCE_CATEGORY_VIDEO identi.ca SOURCE_CATEGORY_SOCIAL ig SOURCE_CATEGORY_SOCIAL imageshack.com SOURCE_CATEGORY_SOCIAL imageshack.us SOURCE_CATEGORY_SOCIAL imvu SOURCE_CATEGORY_SOCIAL imvu.com SOURCE_CATEGORY_SOCIAL in.pinterest.com SOURCE_CATEGORY_SOCIAL in.search.yahoo.com SOURCE_CATEGORY_SEARCH incredimail SOURCE_CATEGORY_SEARCH insanejournal SOURCE_CATEGORY_SOCIAL insanejournal.com SOURCE_CATEGORY_SOCIAL instagram SOURCE_CATEGORY_SOCIAL instagram.com SOURCE_CATEGORY_SOCIAL instapaper SOURCE_CATEGORY_SOCIAL instapaper.com SOURCE_CATEGORY_SOCIAL internations.org SOURCE_CATEGORY_SOCIAL interpals.net SOURCE_CATEGORY_SOCIAL intherooms SOURCE_CATEGORY_SOCIAL intherooms.com SOURCE_CATEGORY_SOCIAL iq.com SOURCE_CATEGORY_VIDEO iqiyi SOURCE_CATEGORY_VIDEO +iqiyi.com SOURCE_CATEGORY_VIDEO irc-galleria.net SOURCE_CATEGORY_SOCIAL is.gd SOURCE_CATEGORY_SOCIAL it.search.yahoo.com SOURCE_CATEGORY_SEARCH italki SOURCE_CATEGORY_SOCIAL italki.com SOURCE_CATEGORY_SOCIAL jammerdirect SOURCE_CATEGORY_SOCIAL jammerdirect.com SOURCE_CATEGORY_SOCIAL jappy.com SOURCE_CATEGORY_SOCIAL jappy.de SOURCE_CATEGORY_SOCIAL jobs.netflix.com SOURCE_CATEGORY_VIDEO justin.tv SOURCE_CATEGORY_VIDEO kaboodle.com SOURCE_CATEGORY_SOCIAL kakao SOURCE_CATEGORY_SOCIAL kakao.com SOURCE_CATEGORY_SOCIAL kakaocorp.com SOURCE_CATEGORY_SOCIAL kaneva SOURCE_CATEGORY_SOCIAL kaneva.com SOURCE_CATEGORY_SOCIAL kin.naver.com SOURCE_CATEGORY_SOCIAL kvasir SOURCE_CATEGORY_SEARCH l.facebook.com SOURCE_CATEGORY_SOCIAL l.instagram.com SOURCE_CATEGORY_SOCIAL l.messenger.com SOURCE_CATEGORY_SOCIAL last.fm SOURCE_CATEGORY_SOCIAL lens.google.com SOURCE_CATEGORY_SEARCH librarything SOURCE_CATEGORY_SOCIAL librarything.com SOURCE_CATEGORY_SOCIAL lifestream.aol.com SOURCE_CATEGORY_SOCIAL line SOURCE_CATEGORY_SOCIAL line.me SOURCE_CATEGORY_SOCIAL linkedin SOURCE_CATEGORY_SOCIAL +linkedin.com SOURCE_CATEGORY_SOCIAL listal SOURCE_CATEGORY_SOCIAL listal.com SOURCE_CATEGORY_SOCIAL listography SOURCE_CATEGORY_SOCIAL listography.com SOURCE_CATEGORY_SOCIAL lite.qwant.com SOURCE_CATEGORY_SEARCH +livedoor.com SOURCE_CATEGORY_SOCIAL livedoorblog SOURCE_CATEGORY_SOCIAL livejournal SOURCE_CATEGORY_SOCIAL livejournal.com SOURCE_CATEGORY_SOCIAL lm.facebook.com SOURCE_CATEGORY_SOCIAL lnkd.in SOURCE_CATEGORY_SOCIAL lycos SOURCE_CATEGORY_SEARCH +m.alibaba.com SOURCE_CATEGORY_SHOPPING m.baidu.com SOURCE_CATEGORY_SEARCH m.blog.naver.com SOURCE_CATEGORY_SOCIAL m.cafe.naver.com SOURCE_CATEGORY_SOCIAL m.facebook.com SOURCE_CATEGORY_SOCIAL m.kin.naver.com SOURCE_CATEGORY_SOCIAL m.naver.com SOURCE_CATEGORY_SEARCH m.search.naver.com SOURCE_CATEGORY_SEARCH m.shopping.naver.com SOURCE_CATEGORY_SHOPPING m.sogou.com SOURCE_CATEGORY_SEARCH m.twitch.tv SOURCE_CATEGORY_VIDEO m.vk.com SOURCE_CATEGORY_SOCIAL m.yelp.com SOURCE_CATEGORY_SOCIAL m.youtube.com SOURCE_CATEGORY_VIDEO mail.rambler.ru SOURCE_CATEGORY_SEARCH mail.yandex.ru SOURCE_CATEGORY_SEARCH malaysia.search.yahoo.com SOURCE_CATEGORY_SEARCH mbga.jp SOURCE_CATEGORY_SOCIAL +medium.com SOURCE_CATEGORY_SOCIAL meetin.org SOURCE_CATEGORY_SOCIAL meetup SOURCE_CATEGORY_SOCIAL meetup.com SOURCE_CATEGORY_SOCIAL meinvz.net SOURCE_CATEGORY_SOCIAL meneame.net SOURCE_CATEGORY_SOCIAL menuism.com SOURCE_CATEGORY_SOCIAL mercadolibre SOURCE_CATEGORY_SHOPPING +mercadolibre.com SOURCE_CATEGORY_SHOPPING mercadolibre.com.ar SOURCE_CATEGORY_SHOPPING mercadolibre.com.mx SOURCE_CATEGORY_SHOPPING message.alibaba.com SOURCE_CATEGORY_SHOPPING messages.google.com SOURCE_CATEGORY_SOCIAL +messages.yahoo.co.jp SOURCE_CATEGORY_SOCIAL messenger SOURCE_CATEGORY_SOCIAL messenger.com SOURCE_CATEGORY_SOCIAL mix.com SOURCE_CATEGORY_SOCIAL mixi.jp SOURCE_CATEGORY_SOCIAL mobile.facebook.com SOURCE_CATEGORY_SOCIAL mocospace SOURCE_CATEGORY_SOCIAL mocospace.com SOURCE_CATEGORY_SOCIAL mouthshut SOURCE_CATEGORY_SOCIAL mouthshut.com SOURCE_CATEGORY_SOCIAL movabletype SOURCE_CATEGORY_SOCIAL movabletype.com SOURCE_CATEGORY_SOCIAL msearch.shopping.naver.com SOURCE_CATEGORY_SHOPPING +msn SOURCE_CATEGORY_SEARCH msn.com SOURCE_CATEGORY_SEARCH mubi SOURCE_CATEGORY_SOCIAL mubi.com SOURCE_CATEGORY_SOCIAL music.youtube.com SOURCE_CATEGORY_VIDEO +mx.search.yahoo.com SOURCE_CATEGORY_SEARCH my.opera.com SOURCE_CATEGORY_SOCIAL myanimelist.net SOURCE_CATEGORY_SOCIAL myheritage SOURCE_CATEGORY_SOCIAL myheritage.com SOURCE_CATEGORY_SOCIAL mylife SOURCE_CATEGORY_SOCIAL mylife.com SOURCE_CATEGORY_SOCIAL mymodernmet SOURCE_CATEGORY_SOCIAL mymodernmet.com SOURCE_CATEGORY_SOCIAL myspace SOURCE_CATEGORY_SOCIAL myspace.com SOURCE_CATEGORY_SOCIAL +najdi SOURCE_CATEGORY_SEARCH naver SOURCE_CATEGORY_SEARCH naver.com SOURCE_CATEGORY_SEARCH netflix SOURCE_CATEGORY_VIDEO +netflix.com SOURCE_CATEGORY_VIDEO netvibes SOURCE_CATEGORY_SOCIAL netvibes.com SOURCE_CATEGORY_SOCIAL news.google.com SOURCE_CATEGORY_SEARCH news.ycombinator.com SOURCE_CATEGORY_SOCIAL newsshowcase SOURCE_CATEGORY_SOCIAL nexopia SOURCE_CATEGORY_SOCIAL ngopost.org SOURCE_CATEGORY_SOCIAL niconico SOURCE_CATEGORY_SOCIAL nicovideo.jp SOURCE_CATEGORY_SOCIAL nightlifelink SOURCE_CATEGORY_SOCIAL nightlifelink.com SOURCE_CATEGORY_SOCIAL ning SOURCE_CATEGORY_SOCIAL ning.com SOURCE_CATEGORY_SOCIAL nl.pinterest.com SOURCE_CATEGORY_SOCIAL nl.search.yahoo.com SOURCE_CATEGORY_SEARCH +nl.shopping.net SOURCE_CATEGORY_SHOPPING no.search.yahoo.com SOURCE_CATEGORY_SEARCH no.shopping.net SOURCE_CATEGORY_SHOPPING ntp.msn.com SOURCE_CATEGORY_SEARCH nz.search.yahoo.com SOURCE_CATEGORY_SEARCH odnoklassniki.ru SOURCE_CATEGORY_SOCIAL odnoklassniki.ua SOURCE_CATEGORY_SOCIAL offer.alibaba.com SOURCE_CATEGORY_SHOPPING okwave.jp SOURCE_CATEGORY_SOCIAL old.reddit.com SOURCE_CATEGORY_SOCIAL one.walmart.com SOURCE_CATEGORY_SHOPPING onet SOURCE_CATEGORY_SEARCH onet.pl SOURCE_CATEGORY_SEARCH oneworldgroup.org SOURCE_CATEGORY_SOCIAL onstartups SOURCE_CATEGORY_SOCIAL onstartups.com SOURCE_CATEGORY_SOCIAL opendiary SOURCE_CATEGORY_SOCIAL opendiary.com SOURCE_CATEGORY_SOCIAL order.shopping.yahoo.co.jp SOURCE_CATEGORY_SHOPPING oshiete.goo.ne.jp SOURCE_CATEGORY_SOCIAL out.reddit.com SOURCE_CATEGORY_SOCIAL over-blog.com SOURCE_CATEGORY_SOCIAL overblog.com SOURCE_CATEGORY_SOCIAL paper.li SOURCE_CATEGORY_SOCIAL partners.shopify.com SOURCE_CATEGORY_SHOPPING partyflock.nl SOURCE_CATEGORY_SOCIAL pe.search.yahoo.com SOURCE_CATEGORY_SEARCH ph.search.yahoo.com SOURCE_CATEGORY_SEARCH photobucket SOURCE_CATEGORY_SOCIAL photobucket.com SOURCE_CATEGORY_SOCIAL pinboard SOURCE_CATEGORY_SOCIAL +pinboard.in SOURCE_CATEGORY_SOCIAL pingsta SOURCE_CATEGORY_SOCIAL pingsta.com SOURCE_CATEGORY_SOCIAL pinterest SOURCE_CATEGORY_SOCIAL pinterest.at SOURCE_CATEGORY_SOCIAL pinterest.ca SOURCE_CATEGORY_SOCIAL pinterest.ch SOURCE_CATEGORY_SOCIAL pinterest.cl SOURCE_CATEGORY_SOCIAL pinterest.co.kr SOURCE_CATEGORY_SOCIAL pinterest.co.uk SOURCE_CATEGORY_SOCIAL pinterest.com SOURCE_CATEGORY_SOCIAL pinterest.com.au SOURCE_CATEGORY_SOCIAL pinterest.com.mx SOURCE_CATEGORY_SOCIAL pinterest.de SOURCE_CATEGORY_SOCIAL pinterest.es SOURCE_CATEGORY_SOCIAL pinterest.fr SOURCE_CATEGORY_SOCIAL pinterest.it SOURCE_CATEGORY_SOCIAL pinterest.jp SOURCE_CATEGORY_SOCIAL pinterest.nz SOURCE_CATEGORY_SOCIAL pinterest.ph SOURCE_CATEGORY_SOCIAL pinterest.pt SOURCE_CATEGORY_SOCIAL pinterest.ru SOURCE_CATEGORY_SOCIAL pinterest.se SOURCE_CATEGORY_SOCIAL pixiv.net SOURCE_CATEGORY_SOCIAL pl.pinterest.com SOURCE_CATEGORY_SOCIAL pl.search.yahoo.com SOURCE_CATEGORY_SEARCH +play.google.com SOURCE_CATEGORY_SEARCH playahead.se SOURCE_CATEGORY_SOCIAL player.twitch.tv SOURCE_CATEGORY_VIDEO player.vimeo.com SOURCE_CATEGORY_VIDEO plurk SOURCE_CATEGORY_SOCIAL +plurk.com SOURCE_CATEGORY_SOCIAL plus.google.com SOURCE_CATEGORY_SOCIAL plus.url.google.com SOURCE_CATEGORY_SOCIAL pocket.co SOURCE_CATEGORY_SOCIAL posterous SOURCE_CATEGORY_SOCIAL posterous.com SOURCE_CATEGORY_SOCIAL pro.homeadvisor.com SOURCE_CATEGORY_SOCIAL pulse.yahoo.com SOURCE_CATEGORY_SOCIAL qapacity SOURCE_CATEGORY_SOCIAL qapacity.com SOURCE_CATEGORY_SOCIAL quechup SOURCE_CATEGORY_SOCIAL quechup.com SOURCE_CATEGORY_SOCIAL quora SOURCE_CATEGORY_SOCIAL quora.com SOURCE_CATEGORY_SOCIAL qwant SOURCE_CATEGORY_SEARCH +qwant.com SOURCE_CATEGORY_SEARCH qzone.qq.com SOURCE_CATEGORY_SOCIAL rakuten SOURCE_CATEGORY_SEARCH rakuten.co.jp SOURCE_CATEGORY_SEARCH rambler SOURCE_CATEGORY_SEARCH rambler.ru SOURCE_CATEGORY_SEARCH ravelry SOURCE_CATEGORY_SOCIAL ravelry.com SOURCE_CATEGORY_SOCIAL reddit SOURCE_CATEGORY_SOCIAL reddit.com SOURCE_CATEGORY_SOCIAL redux SOURCE_CATEGORY_SOCIAL redux.com SOURCE_CATEGORY_SOCIAL renren SOURCE_CATEGORY_SOCIAL renren.com SOURCE_CATEGORY_SOCIAL researchgate.net SOURCE_CATEGORY_SOCIAL reunion SOURCE_CATEGORY_SOCIAL +reunion.com SOURCE_CATEGORY_SOCIAL reverbnation SOURCE_CATEGORY_SOCIAL reverbnation.com SOURCE_CATEGORY_SOCIAL rtl.de SOURCE_CATEGORY_SOCIAL ryze SOURCE_CATEGORY_SOCIAL ryze.com SOURCE_CATEGORY_SOCIAL s3.amazonaws.com SOURCE_CATEGORY_SHOPPING +salespider SOURCE_CATEGORY_SOCIAL salespider.com SOURCE_CATEGORY_SOCIAL scoop.it SOURCE_CATEGORY_SOCIAL screenrant SOURCE_CATEGORY_SOCIAL screenrant.com SOURCE_CATEGORY_SOCIAL scribd SOURCE_CATEGORY_SOCIAL scribd.com SOURCE_CATEGORY_SOCIAL scvngr SOURCE_CATEGORY_SOCIAL scvngr.com SOURCE_CATEGORY_SOCIAL se.search.yahoo.com SOURCE_CATEGORY_SEARCH +se.shopping.net SOURCE_CATEGORY_SHOPPING search-results SOURCE_CATEGORY_SEARCH search.aol.co.uk SOURCE_CATEGORY_SEARCH search.aol.com SOURCE_CATEGORY_SEARCH search.google.com SOURCE_CATEGORY_SEARCH search.smt.docomo.ne.jp SOURCE_CATEGORY_SEARCH search.ukr.net SOURCE_CATEGORY_SEARCH secondlife SOURCE_CATEGORY_SOCIAL secondlife.com SOURCE_CATEGORY_SOCIAL secureurl.ukr.net SOURCE_CATEGORY_SEARCH serverfault SOURCE_CATEGORY_SOCIAL serverfault.com SOURCE_CATEGORY_SOCIAL seznam SOURCE_CATEGORY_SEARCH seznam.cz SOURCE_CATEGORY_SEARCH +sg.search.yahoo.com SOURCE_CATEGORY_SEARCH shareit SOURCE_CATEGORY_SOCIAL sharethis SOURCE_CATEGORY_SOCIAL sharethis.com SOURCE_CATEGORY_SOCIAL shop.app SOURCE_CATEGORY_SHOPPING shopify SOURCE_CATEGORY_SHOPPING shopify.com SOURCE_CATEGORY_SHOPPING shopping.naver.com SOURCE_CATEGORY_SHOPPING shopping.yahoo.co.jp SOURCE_CATEGORY_SHOPPING shopping.yahoo.com SOURCE_CATEGORY_SHOPPING shopzilla SOURCE_CATEGORY_SHOPPING shopzilla.com SOURCE_CATEGORY_SHOPPING shvoong.com SOURCE_CATEGORY_SOCIAL simplycodes.com SOURCE_CATEGORY_SHOPPING sites.google.com SOURCE_CATEGORY_SOCIAL skype SOURCE_CATEGORY_SOCIAL skyrock SOURCE_CATEGORY_SOCIAL skyrock.com SOURCE_CATEGORY_SOCIAL slashdot.org SOURCE_CATEGORY_SOCIAL slideshare.net SOURCE_CATEGORY_SOCIAL smartnews.com SOURCE_CATEGORY_SOCIAL snapchat SOURCE_CATEGORY_SOCIAL snapchat.com SOURCE_CATEGORY_SOCIAL so.com SOURCE_CATEGORY_SEARCH social SOURCE_CATEGORY_SOCIAL sociallife.com.br SOURCE_CATEGORY_SOCIAL socialvibe SOURCE_CATEGORY_SOCIAL socialvibe.com SOURCE_CATEGORY_SOCIAL sogou SOURCE_CATEGORY_SEARCH sogou.com SOURCE_CATEGORY_SEARCH sp-web.search.auone.jp SOURCE_CATEGORY_SEARCH +spaces.live.com SOURCE_CATEGORY_SOCIAL spoke SOURCE_CATEGORY_SOCIAL spoke.com SOURCE_CATEGORY_SOCIAL spruz SOURCE_CATEGORY_SOCIAL spruz.com SOURCE_CATEGORY_SOCIAL ssense.com SOURCE_CATEGORY_SOCIAL stackapps SOURCE_CATEGORY_SOCIAL stackapps.com SOURCE_CATEGORY_SOCIAL stackexchange SOURCE_CATEGORY_SOCIAL stackexchange.com SOURCE_CATEGORY_SOCIAL stackoverflow SOURCE_CATEGORY_SOCIAL stackoverflow.com SOURCE_CATEGORY_SOCIAL stardoll.com SOURCE_CATEGORY_SOCIAL startsiden SOURCE_CATEGORY_SEARCH +startsiden.no SOURCE_CATEGORY_SEARCH stickam SOURCE_CATEGORY_SOCIAL stickam.com SOURCE_CATEGORY_SOCIAL store.shopping.yahoo.co.jp SOURCE_CATEGORY_SHOPPING stripe SOURCE_CATEGORY_SHOPPING stripe.com SOURCE_CATEGORY_SHOPPING studivz.net SOURCE_CATEGORY_SOCIAL suche.aol.de SOURCE_CATEGORY_SEARCH suomi24.fi SOURCE_CATEGORY_SOCIAL superuser SOURCE_CATEGORY_SOCIAL superuser.com SOURCE_CATEGORY_SOCIAL sweeva SOURCE_CATEGORY_SOCIAL sweeva.com SOURCE_CATEGORY_SOCIAL t.co SOURCE_CATEGORY_SOCIAL t.me SOURCE_CATEGORY_SOCIAL tagged SOURCE_CATEGORY_SOCIAL tagged.com SOURCE_CATEGORY_SOCIAL +taggedmail SOURCE_CATEGORY_SOCIAL taggedmail.com SOURCE_CATEGORY_SOCIAL talkbiznow SOURCE_CATEGORY_SOCIAL talkbiznow.com SOURCE_CATEGORY_SOCIAL taringa.net SOURCE_CATEGORY_SOCIAL techmeme SOURCE_CATEGORY_SOCIAL techmeme.com SOURCE_CATEGORY_SOCIAL ted SOURCE_CATEGORY_VIDEO +ted.com SOURCE_CATEGORY_VIDEO tencent SOURCE_CATEGORY_SOCIAL tencent.com SOURCE_CATEGORY_SOCIAL terra SOURCE_CATEGORY_SEARCH th.search.yahoo.com SOURCE_CATEGORY_SEARCH tiktok SOURCE_CATEGORY_SOCIAL tiktok.com SOURCE_CATEGORY_SOCIAL tinyurl SOURCE_CATEGORY_SOCIAL tinyurl.com SOURCE_CATEGORY_SOCIAL toolbox SOURCE_CATEGORY_SOCIAL toolbox.com SOURCE_CATEGORY_SOCIAL touch.facebook.com SOURCE_CATEGORY_SOCIAL tr.pinterest.com SOURCE_CATEGORY_SOCIAL tr.search.yahoo.com SOURCE_CATEGORY_SEARCH travellerspoint SOURCE_CATEGORY_SOCIAL travellerspoint.com SOURCE_CATEGORY_SOCIAL tripadvisor SOURCE_CATEGORY_SOCIAL tripadvisor.com SOURCE_CATEGORY_SOCIAL trombi SOURCE_CATEGORY_SOCIAL trombi.com SOURCE_CATEGORY_SOCIAL trustpilot SOURCE_CATEGORY_SOCIAL tudou SOURCE_CATEGORY_SOCIAL tudou.com SOURCE_CATEGORY_SOCIAL +tuenti SOURCE_CATEGORY_SOCIAL tuenti.com SOURCE_CATEGORY_SOCIAL tumblr SOURCE_CATEGORY_SOCIAL tumblr.com SOURCE_CATEGORY_SOCIAL tut.by SOURCE_CATEGORY_SEARCH +tw.search.yahoo.com SOURCE_CATEGORY_SEARCH tweetdeck SOURCE_CATEGORY_SOCIAL tweetdeck.com SOURCE_CATEGORY_SOCIAL twitch SOURCE_CATEGORY_VIDEO twitch.tv SOURCE_CATEGORY_VIDEO twitter SOURCE_CATEGORY_SOCIAL twitter.com SOURCE_CATEGORY_SOCIAL twoo.com SOURCE_CATEGORY_SOCIAL typepad SOURCE_CATEGORY_SOCIAL typepad.com SOURCE_CATEGORY_SOCIAL uk.search.yahoo.com SOURCE_CATEGORY_SEARCH uk.shopping.net SOURCE_CATEGORY_SHOPPING ukr SOURCE_CATEGORY_SEARCH unblog.fr SOURCE_CATEGORY_SOCIAL urbanspoon.com SOURCE_CATEGORY_SOCIAL us.search.yahoo.com SOURCE_CATEGORY_SEARCH ushareit.com SOURCE_CATEGORY_SOCIAL ushi.cn SOURCE_CATEGORY_SOCIAL utreon SOURCE_CATEGORY_VIDEO utreon.com SOURCE_CATEGORY_VIDEO vampirefreaks SOURCE_CATEGORY_SOCIAL vampirefreaks.com SOURCE_CATEGORY_SOCIAL vampirerave SOURCE_CATEGORY_SOCIAL vampirerave.com SOURCE_CATEGORY_SOCIAL veoh SOURCE_CATEGORY_VIDEO veoh.com SOURCE_CATEGORY_VIDEO +vg.no SOURCE_CATEGORY_SOCIAL viadeo.journaldunet.com SOURCE_CATEGORY_VIDEO video.ibm.com SOURCE_CATEGORY_SOCIAL vimeo SOURCE_CATEGORY_VIDEO vimeo.com SOURCE_CATEGORY_VIDEO virgilio SOURCE_CATEGORY_SEARCH vk.com SOURCE_CATEGORY_SOCIAL vkontakte.ru SOURCE_CATEGORY_SOCIAL vn.search.yahoo.com SOURCE_CATEGORY_SEARCH wakoopa SOURCE_CATEGORY_SOCIAL wakoopa.com SOURCE_CATEGORY_SOCIAL walmart SOURCE_CATEGORY_SHOPPING walmart.com SOURCE_CATEGORY_SHOPPING wap.sogou.com SOURCE_CATEGORY_SEARCH wattpad SOURCE_CATEGORY_SOCIAL wattpad.com SOURCE_CATEGORY_SOCIAL web.facebook.com SOURCE_CATEGORY_SOCIAL web.skype.com SOURCE_CATEGORY_SOCIAL webmaster.yandex.ru SOURCE_CATEGORY_SEARCH websearch.rakuten.co.jp SOURCE_CATEGORY_SEARCH webshots SOURCE_CATEGORY_SOCIAL webshots.com SOURCE_CATEGORY_SOCIAL wechat SOURCE_CATEGORY_SOCIAL wechat.com SOURCE_CATEGORY_SOCIAL weebly SOURCE_CATEGORY_SOCIAL weebly.com SOURCE_CATEGORY_SOCIAL weibo SOURCE_CATEGORY_SOCIAL weibo.com SOURCE_CATEGORY_SOCIAL wer-weiss-was.de SOURCE_CATEGORY_SOCIAL weread SOURCE_CATEGORY_SOCIAL weread.com SOURCE_CATEGORY_SOCIAL +whatsapp SOURCE_CATEGORY_SOCIAL whatsapp.com SOURCE_CATEGORY_SOCIAL wiki.answers.com SOURCE_CATEGORY_SOCIAL wikihow.com SOURCE_CATEGORY_SOCIAL wikitravel.org SOURCE_CATEGORY_SOCIAL wistia SOURCE_CATEGORY_VIDEO +wistia.com SOURCE_CATEGORY_VIDEO woot.com SOURCE_CATEGORY_SOCIAL wordpress SOURCE_CATEGORY_SOCIAL wordpress.com SOURCE_CATEGORY_SOCIAL wordpress.org SOURCE_CATEGORY_SOCIAL xanga SOURCE_CATEGORY_SOCIAL xanga.com SOURCE_CATEGORY_SOCIAL xing SOURCE_CATEGORY_SOCIAL xing.com SOURCE_CATEGORY_SOCIAL +yahoo SOURCE_CATEGORY_SEARCH yahoo-mbga.jp SOURCE_CATEGORY_SOCIAL yahoo.co.jp SOURCE_CATEGORY_SEARCH yahoo.com SOURCE_CATEGORY_SEARCH yammer SOURCE_CATEGORY_SOCIAL yammer.com SOURCE_CATEGORY_SOCIAL yandex SOURCE_CATEGORY_SEARCH yandex.by SOURCE_CATEGORY_SEARCH yandex.com SOURCE_CATEGORY_SEARCH yandex.com.tr SOURCE_CATEGORY_SEARCH yandex.fr SOURCE_CATEGORY_SEARCH yandex.kz SOURCE_CATEGORY_SEARCH yandex.ru SOURCE_CATEGORY_SEARCH yandex.ua SOURCE_CATEGORY_SEARCH yandex.uz SOURCE_CATEGORY_SEARCH yelp SOURCE_CATEGORY_SOCIAL +yelp.co.uk SOURCE_CATEGORY_SOCIAL yelp.com SOURCE_CATEGORY_SOCIAL youku SOURCE_CATEGORY_VIDEO youku.com SOURCE_CATEGORY_VIDEO youroom.in SOURCE_CATEGORY_SOCIAL youtube SOURCE_CATEGORY_VIDEO youtube.com SOURCE_CATEGORY_VIDEO za.pinterest.com SOURCE_CATEGORY_SOCIAL zalo SOURCE_CATEGORY_SOCIAL zen.yandex.ru SOURCE_CATEGORY_SEARCH zoo.gr SOURCE_CATEGORY_SOCIAL zooppa SOURCE_CATEGORY_SOCIAL zooppa.com SOURCE_CATEGORY_SOCIAL