From 47e9c85a07c06ee7ab69477035ea2ed6fe243473 Mon Sep 17 00:00:00 2001 From: Sven Slootweg Date: Fri, 27 Jun 2014 20:28:32 +0200 Subject: [PATCH] Improve normalization for registrar names, and implement .com.tw (TWNIC) parsing. Fixes #22. --- pythonwhois/parse.py | 94 ++++++++++++++++++--------- test/data/davicom.com.tw | 21 ++++++ test/data/google.com.tw | 33 ++++++++++ test/data/pcmups.com.tw | 21 ++++++ test/data/porn.com.tw | 31 +++++++++ test/data/realtek.com.tw | 21 ++++++ test/data/via.com.tw | 22 +++++++ test/data/yahoo.com.tw | 34 ++++++++++ test/target_default/davicom.com.tw | 1 + test/target_default/google.com.tw | 1 + test/target_default/pcmups.com.tw | 1 + test/target_default/porn.com.tw | 1 + test/target_default/realtek.com.tw | 1 + test/target_default/via.com.tw | 1 + test/target_default/yahoo.com.tw | 1 + test/target_normalized/davicom.com.tw | 1 + test/target_normalized/google.com.tw | 1 + test/target_normalized/pcmups.com.tw | 1 + test/target_normalized/porn.com.tw | 1 + test/target_normalized/realtek.com.tw | 1 + test/target_normalized/via.com.tw | 1 + test/target_normalized/yahoo.com.tw | 1 + 22 files changed, 259 insertions(+), 32 deletions(-) create mode 100644 test/data/davicom.com.tw create mode 100644 test/data/google.com.tw create mode 100644 test/data/pcmups.com.tw create mode 100644 test/data/porn.com.tw create mode 100644 test/data/realtek.com.tw create mode 100644 test/data/via.com.tw create mode 100644 test/data/yahoo.com.tw create mode 100644 test/target_default/davicom.com.tw create mode 100644 test/target_default/google.com.tw create mode 100644 test/target_default/pcmups.com.tw create mode 100644 test/target_default/porn.com.tw create mode 100644 test/target_default/realtek.com.tw create mode 100644 test/target_default/via.com.tw create mode 100644 test/target_default/yahoo.com.tw create mode 100644 test/target_normalized/davicom.com.tw create mode 100644 test/target_normalized/google.com.tw create mode 100644 test/target_normalized/pcmups.com.tw create mode 100644 test/target_normalized/porn.com.tw create mode 100644 test/target_normalized/realtek.com.tw create mode 100644 test/target_normalized/via.com.tw create mode 100644 test/target_normalized/yahoo.com.tw diff --git a/pythonwhois/parse.py b/pythonwhois/parse.py index 824ed7a..8cb0921 100644 --- a/pythonwhois/parse.py +++ b/pythonwhois/parse.py @@ -89,6 +89,7 @@ grammar = { 'Registration Service Provided By:\s?(?P.+)', 'Registrar of Record:\s?(?P.+)', 'Domain Registrar :\s?(?P.+)', + 'Registration Service Provider: (?P.+)', '\tName:\t\s(?P.+)'], 'whois_server': ['Whois Server:\s?(?P.+)', 'Registrar Whois:\s?(?P.+)'], @@ -273,6 +274,16 @@ def parse_raw_whois(raw_data, normalized=[], never_query_handles=True, handle_se data["nameservers"].append(match.strip()) except KeyError as e: data["nameservers"] = [match.strip()] + # ... and again for TWNIC. + match = re.search(" Domain servers in listed order:\n([\s\S]*?\n)\n", segment) + if match is not None: + chunk = match.group(1) + for match in re.findall(" (.+)\n", chunk): + match = match.split()[0] + try: + data["nameservers"].append(match.strip()) + except KeyError as e: + data["nameservers"] = [match.strip()] data["contacts"] = parse_registrants(raw_data, never_query_handles, handle_server) @@ -345,11 +356,15 @@ def normalize_data(data, normalized): data[key] = [item.lower() for item in data[key]] for key, threshold in (("registrar", 4), ("status", 3)): + if key == "registrar": + ignore_nic = True + else: + ignore_nic = False if key in data and data[key] is not None and (normalized == True or key in normalized): if is_string(data[key]): - data[key] = normalize_name(data[key], abbreviation_threshold=threshold, length_threshold=1) + data[key] = normalize_name(data[key], abbreviation_threshold=threshold, length_threshold=1, ignore_nic=ignore_nic) else: - data[key] = [normalize_name(item, abbreviation_threshold=threshold, length_threshold=1) for item in data[key]] + data[key] = [normalize_name(item, abbreviation_threshold=threshold, length_threshold=1, ignore_nic=ignore_nic) for item in data[key]] for contact_type, contact in data['contacts'].items(): if contact is not None: @@ -375,43 +390,47 @@ def normalize_data(data, normalized): pass # Not a string return data -def normalize_name(value, abbreviation_threshold=4, length_threshold=8, lowercase_domains=True): +def normalize_name(value, abbreviation_threshold=4, length_threshold=8, lowercase_domains=True, ignore_nic=False): normalized_lines = [] for line in value.split("\n"): line = line.strip(",") # Get rid of useless comma's if (line.isupper() or line.islower()) and len(line) >= length_threshold: # This line is likely not capitalized properly - words = line.split() - normalized_words = [] - if len(words) >= 1: - # First word - if len(words[0]) >= abbreviation_threshold and "." not in words[0]: - normalized_words.append(words[0].capitalize()) - elif lowercase_domains and "." in words[0] and not words[0].endswith(".") and not words[0].startswith("."): - normalized_words.append(words[0].lower()) - else: - # Probably an abbreviation or domain, leave it alone - normalized_words.append(words[0]) - if len(words) >= 3: - # Words between the first and last - for word in words[1:-1]: - if len(word) >= abbreviation_threshold and "." not in word: - normalized_words.append(word.capitalize()) - elif lowercase_domains and "." in word and not word.endswith(".") and not word.startswith("."): - normalized_words.append(word.lower()) + if ignore_nic == True and "nic" in line.lower(): + # This is a registrar name containing 'NIC' - it should probably be all-uppercase. + line = line.upper() + else: + words = line.split() + normalized_words = [] + if len(words) >= 1: + # First word + if len(words[0]) >= abbreviation_threshold and "." not in words[0]: + normalized_words.append(words[0].capitalize()) + elif lowercase_domains and "." in words[0] and not words[0].endswith(".") and not words[0].startswith("."): + normalized_words.append(words[0].lower()) else: # Probably an abbreviation or domain, leave it alone - normalized_words.append(word) - if len(words) >= 2: - # Last word - if len(words[-1]) >= abbreviation_threshold and "." not in words[-1]: - normalized_words.append(words[-1].capitalize()) - elif lowercase_domains and "." in words[-1] and not words[-1].endswith(".") and not words[-1].startswith("."): - normalized_words.append(words[-1].lower()) - else: - # Probably an abbreviation or domain, leave it alone - normalized_words.append(words[-1]) - line = " ".join(normalized_words) + normalized_words.append(words[0]) + if len(words) >= 3: + # Words between the first and last + for word in words[1:-1]: + if len(word) >= abbreviation_threshold and "." not in word: + normalized_words.append(word.capitalize()) + elif lowercase_domains and "." in word and not word.endswith(".") and not word.startswith("."): + normalized_words.append(word.lower()) + else: + # Probably an abbreviation or domain, leave it alone + normalized_words.append(word) + if len(words) >= 2: + # Last word + if len(words[-1]) >= abbreviation_threshold and "." not in words[-1]: + normalized_words.append(words[-1].capitalize()) + elif lowercase_domains and "." in words[-1] and not words[-1].endswith(".") and not words[-1].startswith("."): + normalized_words.append(words[-1].lower()) + else: + # Probably an abbreviation or domain, leave it alone + normalized_words.append(words[-1]) + line = " ".join(normalized_words) normalized_lines.append(line) return "\n".join(normalized_lines) @@ -562,6 +581,8 @@ def parse_registrants(data, never_query_handles=True, handle_server=""): "Domain Holder: (?P.+)\n(?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?))?)?)?)?)?)?, (?P.+)\n(?P.+)\n(?P[A-Z]+)\n", # .co.th, format 2 "Domain Holder: (?P.+)\n(?P.+)\n(?:(?P.+)\n)?(?:(?P.+)\n)?.+?, (?P.+)\n(?P.+)\n(?P.+)\n(?P[A-Z]+)\n", # .co.th, format 3 "Domain Holder: (?P.+)\n(?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?))?)?)?)?)?)?\n(?P.+),? (?P[A-Z]{2,3})(?: [A-Z0-9]+)?\n(?P.+)\n(?P[A-Z]+)\n", # .co.th, format 4 + " Registrant:\n (?P.+)\n (?P.+) (?P.+)\n (?P.*)\n (?P.*)\n (?P.*)\n (?P.+), (?P[^,\n]*)\n (?P.+)\n", # .com.tw (Western registrars) + "Registrant:\n(?P.+)\n(?P.+)\n(?P.+?)(?:,+(?P.+?)(?:,+(?P.+?)(?:,+(?P.+?)(?:,+(?P.+?)(?:,+(?P.+?)(?:,+(?P.+?))?)?)?)?)?)?,(?P.+),(?P.+)\n\n Contact:\n (?P.+) (?P.+)\n TEL: (?P.+?)(?:(?:#|ext.?)(?P.+))?\n FAX: (?P.+)(?:(?:#|ext.?)(?P.+))?\n", # .com.tw (TWNIC/SEEDNET, Taiwanese companies only?) "Registrant Contact Information:\n\nCompany English Name \(It should be the same as the registered/corporation name on your Business Register Certificate or relevant documents\):(?P.+)\nCompany Chinese name:(?P.+)\nAddress: (?P.+)\nCountry: (?P.+)\nEmail: (?P.+)\n", # HKDNR (.hk) "owner:\s+(?P.+)", # .br "person:\s+(?P.+)", # nic.ru (person) @@ -598,6 +619,7 @@ def parse_registrants(data, never_query_handles=True, handle_server=""): "Tech Contact: (?P.+)\n(?P.+) (?P[^\s]+)\n(?P.+)\n(?P[A-Z]+)\n", # .co.th, format 4 "Tech Contact: (?P.+)\n(?P.+)\n(?P.+)\n(?P.+) (?P[^\s]+)\n(?P.+)\n(?P[A-Z]+)\n", # .co.th, format 5 "Tech Contact: (?P.+)\n(?P.+)\n(?P.+)\n(?P.+)\n(?:(?P.+)\n)?(?P.+)\n(?P.+)\n(?P[A-Z]+)\n", # .co.th, format 6 + " Technical Contact:\n (?P.+) (?P.+)\n (?P.*)\n (?P.*)\n", # .com.tw (Western registrars) "Technical Contact Information:\n\n(?:Given name: (?P.+)\n)?(?:Family name: (?P.+)\n)?(?:Company name: (?P.+)\n)?Address: (?P.+)\nCountry: (?P.+)\nPhone: (?P.*)\nFax: (?P.*)\nEmail: (?P.+)\n(?:Account Name: (?P.+)\n)?", # HKDNR (.hk) ] @@ -622,6 +644,7 @@ def parse_registrants(data, never_query_handles=True, handle_server=""): " Administrative contact:\n (?P.+)\n (?P.*)\n (?P.+)\n (?P.+) (?P\S+),[ ]+(?P.+)\n (?P.+)\n (?P.+)\n (?P.*)\n (?P.*)", # .am "Administrative Contact:\n Name: (?P.+)\n City: (?P.+)\n State: (?P.+)\n Country: (?P.+)\n", # Akky (.com.mx) "\[Tech-C\]\nType: (?P.+)\nName: (?P.+)\n(Organisation: (?P.+)\n){0,1}(Address: (?P.+)\n){1}(Address: (?P.+)\n){0,1}(Address: (?P.+)\n){0,1}(Address: (?P.+)\n){0,1}PostalCode: (?P.+)\nCity: (?P.+)\nCountryCode: (?P[A-Za-z]{2})\nPhone: (?P.+)\nFax: (?P.+)\nEmail: (?P.+)\n(Remarks: (?P.+)\n){0,1}Changed: (?P.+)", # DeNIC + " Administrative Contact:\n (?P.+) (?P.+)\n (?P.*)\n (?P.*)\n", # .com.tw (Western registrars) "Administrative Contact Information:\n\n(?:Given name: (?P.+)\n)?(?:Family name: (?P.+)\n)?(?:Company name: (?P.+)\n)?Address: (?P.+)\nCountry: (?P.+)\nPhone: (?P.*)\nFax: (?P.*)\nEmail: (?P.+)\n(?:Account Name: (?P.+)\n)?", # HKDNR (.hk) ] @@ -799,6 +822,13 @@ def parse_registrants(data, never_query_handles=True, handle_server=""): if 'lastname' in obj: elements.append(obj["lastname"]) obj["name"] = " ".join(elements) + if 'country' in obj and 'city' in obj and (re.match("^R\.?O\.?C\.?$", obj["country"], re.IGNORECASE) or obj["country"].lower() == "republic of china") and obj["city"].lower() == "taiwan": + # There's an edge case where some registrants append ", Republic of China" after "Taiwan", and this is mis-parsed + # as Taiwan being the city. This is meant to correct that. + obj["country"] = "%s, %s" % (obj["city"], obj["country"]) + lines = [x.strip() for x in obj["street"].splitlines()] + obj["city"] = lines[-1] + obj["street"] = "\n".join(lines[:-1]) return { "registrant": registrant, diff --git a/test/data/davicom.com.tw b/test/data/davicom.com.tw new file mode 100644 index 0000000..6a879a2 --- /dev/null +++ b/test/data/davicom.com.tw @@ -0,0 +1,21 @@ +Domain Name: davicom.com.tw +Registrant: +聯傑國際股份有限公司 +Davicom Semiconductor, Inc. +No. 6 Li-Hsin Rd. VI, Science-Based Park, Hsin-Chu, Taiwan, R.O.C. + + Contact: + Alan Ma alan_ma@davicom.com.tw + TEL: (03)5798797 #8566 + FAX: (03)5646929 + + Record expires on 2017-05-31 (YYYY-MM-DD) + Record created on 1997-05-01 (YYYY-MM-DD) + + Domain servers in listed order: + davicom.com.tw 60.250.193.73 + davicom.com.tw 202.39.11.22 + +Registration Service Provider: TWNIC + + diff --git a/test/data/google.com.tw b/test/data/google.com.tw new file mode 100644 index 0000000..4393fb4 --- /dev/null +++ b/test/data/google.com.tw @@ -0,0 +1,33 @@ +Domain Name: google.com.tw + Registrant: + Google Inc. + DNS Admin dns-admin@google.com + +1.6502530000 + +1.6506188571 + 1600 Amphitheatre Parkway + Mountain View, CA + US + + Administrative Contact: + DNS Admin dns-admin@google.com + +1.6502530000 + +1.6506188571 + + Technical Contact: + DNS Admin dns-admin@google.com + +1.6502530000 + +1.6506188571 + + Record expires on 2014-11-09 (YYYY-MM-DD) + Record created on 2000-08-29 (YYYY-MM-DD) + + Domain servers in listed order: + ns1.google.com + ns2.google.com + ns3.google.com + ns4.google.com + +Registration Service Provider: Markmonitor, Inc. + +[Provided by NeuStar Registry Gateway Services] + diff --git a/test/data/pcmups.com.tw b/test/data/pcmups.com.tw new file mode 100644 index 0000000..a5517dd --- /dev/null +++ b/test/data/pcmups.com.tw @@ -0,0 +1,21 @@ +Domain Name: pcmups.com.tw +Registrant: +科風股份有限公司 +Powercom Co., Ltd. +8F, No. 246, Lien Chen Road, Chung Ho City, Taipei Hsien, Taiwan ROC + + Contact: + Amos Yu market@upspowercom.com.tw + TEL: 02-22258552#313 + FAX: 02-22251776 + + Record expires on 2014-08-29 (YYYY-MM-DD) + Record created on 2001-08-28 (YYYY-MM-DD) + + Domain servers in listed order: + ns.hinetserver.com 61.63.79.1 + ns2.hinetserver.com 61.56.221.35 + +Registration Service Provider: SEEDNET + + diff --git a/test/data/porn.com.tw b/test/data/porn.com.tw new file mode 100644 index 0000000..2d36aec --- /dev/null +++ b/test/data/porn.com.tw @@ -0,0 +1,31 @@ +Domain Name: porn.com.tw + Registrant: + JW + Jeffrey Williams faiwot@wag1.com + +44.1502566183 + + 95 Wavenet Crescent + Lowestoft, + GB + + Administrative Contact: + Jeffrey Williams faiwot@wag1.com + +44.1502566183 + + + Technical Contact: + Jeffrey Williams faiwot@wag1.com + +44.1502566183 + + + Record expires on 2015-02-24 (YYYY-MM-DD) + Record created on 2006-02-24 (YYYY-MM-DD) + + Domain servers in listed order: + ns1.parkingcrew.net + ns2.parkingcrew.net + +Registration Service Provider: Key-Systems GmbH + +[Provided by NeuStar Registry Gateway Services] + diff --git a/test/data/realtek.com.tw b/test/data/realtek.com.tw new file mode 100644 index 0000000..2386580 --- /dev/null +++ b/test/data/realtek.com.tw @@ -0,0 +1,21 @@ +Domain Name: realtek.com.tw +Registrant: +瑞昱半導體股份有限公司 +Realtek Semoconductor Co., Ltd +No.2, Innovation Road II, Hsinchu,Science Park,Hsinchu , Taiwan + + Contact: + Mengze Du justindo@realtek.com + TEL: (03) 5780211 ext3079 + FAX: (03) 5774713 + + Record expires on 2018-05-31 (YYYY-MM-DD) + Record created on 1997-05-01 (YYYY-MM-DD) + + Domain servers in listed order: + ns1.realtek.com.tw 60.250.210.254 + ns2.realtek.com.tw 60.248.182.29 + +Registration Service Provider: TWNIC + + diff --git a/test/data/via.com.tw b/test/data/via.com.tw new file mode 100644 index 0000000..5d534f4 --- /dev/null +++ b/test/data/via.com.tw @@ -0,0 +1,22 @@ +Domain Name: via.com.tw +Registrant: +威盛電子股份有限公司 +VIA Technologies, Inc. +8F, 535, Chung-Cheng Rd. Hsin-Tien + + Contact: + Ben Chen BenChen@via.com.tw + TEL: 2-22185452#6557 + FAX: 2-22188924 + + Record expires on 2024-05-31 (YYYY-MM-DD) + Record created on 1985-05-20 (YYYY-MM-DD) + + Domain servers in listed order: + tpns1.viatech.com.tw 61.66.243.23 + frns1.viatech.com.tw 12.47.63.7 + bjns1.viatech.com.tw 152.104.150.2 + +Registration Service Provider: TWNIC + + diff --git a/test/data/yahoo.com.tw b/test/data/yahoo.com.tw new file mode 100644 index 0000000..187326b --- /dev/null +++ b/test/data/yahoo.com.tw @@ -0,0 +1,34 @@ +Domain Name: yahoo.com.tw + Registrant: + Yahoo! Inc. + Domain Administrator domainadmin@yahoo-inc.com + +1.4083493300 + +1.4083493301 + 701 First Avenue + Sunnyvale, CA + US + + Administrative Contact: + Domain Administrator domainadmin@yahoo-inc.com + +1.4083493300 + +1.4083493301 + + Technical Contact: + Domain Administrator domainadmin@yahoo-inc.com + +1.4083493300 + +1.4083493301 + + Record expires on 2019-07-12 (YYYY-MM-DD) + Record created on 1997-05-01 (YYYY-MM-DD) + + Domain servers in listed order: + ns1.yahoo.com + ns2.yahoo.com + ns3.yahoo.com + ns4.yahoo.com + ns5.yahoo.com + +Registration Service Provider: Markmonitor, Inc. + +[Provided by NeuStar Registry Gateway Services] + diff --git a/test/target_default/davicom.com.tw b/test/target_default/davicom.com.tw new file mode 100644 index 0000000..6cda7d4 --- /dev/null +++ b/test/target_default/davicom.com.tw @@ -0,0 +1 @@ +{"contacts": {"admin": null, "tech": null, "registrant": {"city": "Hsin-Chu", "fax": "(03)5646929", "name": "Alan Ma", "phone": "(03)5798797 ext. 8566", "street": "No. 6 Li-Hsin Rd. VI\nScience-Based Park", "organization": "\u806f\u5091\u570b\u969b\u80a1\u4efd\u6709\u9650\u516c\u53f8\nDavicom Semiconductor, Inc.", "country": "Taiwan, R.O.C.", "email": "alan_ma@davicom.com.tw"}, "billing": null}, "nameservers": ["davicom.com.tw"], "expiration_date": ["2017-05-31T00:00:00", "2017-05-31T00:00:00"], "creation_date": ["1997-05-01T00:00:00", "1997-05-01T00:00:00"], "raw": ["Domain Name: davicom.com.tw\nRegistrant:\n\u806f\u5091\u570b\u969b\u80a1\u4efd\u6709\u9650\u516c\u53f8\nDavicom Semiconductor, Inc.\nNo. 6 Li-Hsin Rd. VI, Science-Based Park, Hsin-Chu, Taiwan, R.O.C.\n\n Contact:\n Alan Ma alan_ma@davicom.com.tw\n TEL: (03)5798797 #8566\n FAX: (03)5646929\n\n Record expires on 2017-05-31 (YYYY-MM-DD)\n Record created on 1997-05-01 (YYYY-MM-DD)\n\n Domain servers in listed order:\n davicom.com.tw 60.250.193.73 \n davicom.com.tw 202.39.11.22 \n\nRegistration Service Provider: TWNIC\n\n\n"], "registrar": ["TWNIC"]} \ No newline at end of file diff --git a/test/target_default/google.com.tw b/test/target_default/google.com.tw new file mode 100644 index 0000000..05eb4f5 --- /dev/null +++ b/test/target_default/google.com.tw @@ -0,0 +1 @@ +{"contacts": {"admin": {"phone": "+1.6502530000", "fax": "+1.6506188571", "name": "DNS Admin", "email": "dns-admin@google.com"}, "tech": {"phone": "+1.6502530000", "fax": "+1.6506188571", "name": "DNS Admin", "email": "dns-admin@google.com"}, "registrant": {"city": "Mountain View", "fax": "+1.6506188571", "name": "DNS Admin", "country": "US", "phone": "+1.6502530000", "state": "CA", "street": "1600 Amphitheatre Parkway", "organization": "Google Inc.", "email": "dns-admin@google.com"}, "billing": null}, "nameservers": ["ns1.google.com", "ns2.google.com", "ns3.google.com", "ns4.google.com"], "expiration_date": ["2014-11-09T00:00:00", "2014-11-09T00:00:00"], "creation_date": ["2000-08-29T00:00:00", "2000-08-29T00:00:00"], "raw": ["Domain Name: google.com.tw\n Registrant:\n Google Inc.\n DNS Admin dns-admin@google.com\n +1.6502530000\n +1.6506188571\n 1600 Amphitheatre Parkway \n Mountain View, CA\n US\n\n Administrative Contact:\n DNS Admin dns-admin@google.com\n +1.6502530000\n +1.6506188571\n\n Technical Contact:\n DNS Admin dns-admin@google.com\n +1.6502530000\n +1.6506188571\n\n Record expires on 2014-11-09 (YYYY-MM-DD)\n Record created on 2000-08-29 (YYYY-MM-DD)\n\n Domain servers in listed order:\n ns1.google.com \n ns2.google.com \n ns3.google.com \n ns4.google.com \n\nRegistration Service Provider: Markmonitor, Inc.\n\n[Provided by NeuStar Registry Gateway Services]\n\n"], "registrar": ["Markmonitor, Inc."]} \ No newline at end of file diff --git a/test/target_default/pcmups.com.tw b/test/target_default/pcmups.com.tw new file mode 100644 index 0000000..1f4385e --- /dev/null +++ b/test/target_default/pcmups.com.tw @@ -0,0 +1 @@ +{"contacts": {"admin": null, "tech": null, "registrant": {"city": "Taipei Hsien", "fax": "02-22251776", "name": "Amos Yu", "phone": "02-22258552 ext. 313", "street": "8F\nNo. 246\nLien Chen Road\nChung Ho City", "organization": "\u79d1\u98a8\u80a1\u4efd\u6709\u9650\u516c\u53f8\nPowercom Co., Ltd.", "country": "Taiwan ROC", "email": "market@upspowercom.com.tw"}, "billing": null}, "nameservers": ["ns.hinetserver.com", "ns2.hinetserver.com"], "expiration_date": ["2014-08-29T00:00:00", "2014-08-29T00:00:00"], "creation_date": ["2001-08-28T00:00:00", "2001-08-28T00:00:00"], "raw": ["Domain Name: pcmups.com.tw\nRegistrant:\n\u79d1\u98a8\u80a1\u4efd\u6709\u9650\u516c\u53f8\nPowercom Co., Ltd.\n8F, No. 246, Lien Chen Road, Chung Ho City, Taipei Hsien, Taiwan ROC\n\n Contact:\n Amos Yu market@upspowercom.com.tw\n TEL: 02-22258552#313\n FAX: 02-22251776\n\n Record expires on 2014-08-29 (YYYY-MM-DD)\n Record created on 2001-08-28 (YYYY-MM-DD)\n\n Domain servers in listed order:\n ns.hinetserver.com 61.63.79.1\n ns2.hinetserver.com 61.56.221.35\n\nRegistration Service Provider: SEEDNET\n\n\n"], "registrar": ["SEEDNET"]} \ No newline at end of file diff --git a/test/target_default/porn.com.tw b/test/target_default/porn.com.tw new file mode 100644 index 0000000..b16b012 --- /dev/null +++ b/test/target_default/porn.com.tw @@ -0,0 +1 @@ +{"contacts": {"admin": {"phone": "+44.1502566183", "name": "Jeffrey Williams", "email": "faiwot@wag1.com"}, "tech": {"phone": "+44.1502566183", "name": "Jeffrey Williams", "email": "faiwot@wag1.com"}, "registrant": {"city": "Lowestoft", "name": "Jeffrey Williams", "country": "GB", "phone": "+44.1502566183", "street": "95 Wavenet Crescent", "organization": "JW", "email": "faiwot@wag1.com"}, "billing": null}, "nameservers": ["ns1.parkingcrew.net", "ns2.parkingcrew.net"], "expiration_date": ["2015-02-24T00:00:00", "2015-02-24T00:00:00"], "creation_date": ["2006-02-24T00:00:00", "2006-02-24T00:00:00"], "raw": ["Domain Name: porn.com.tw\n Registrant:\n JW\n Jeffrey Williams faiwot@wag1.com\n +44.1502566183\n \n 95 Wavenet Crescent \n Lowestoft, \n GB\n\n Administrative Contact:\n Jeffrey Williams faiwot@wag1.com\n +44.1502566183\n \n\n Technical Contact:\n Jeffrey Williams faiwot@wag1.com\n +44.1502566183\n \n\n Record expires on 2015-02-24 (YYYY-MM-DD)\n Record created on 2006-02-24 (YYYY-MM-DD)\n\n Domain servers in listed order:\n ns1.parkingcrew.net \n ns2.parkingcrew.net \n\nRegistration Service Provider: Key-Systems GmbH\n\n[Provided by NeuStar Registry Gateway Services]\n\n"], "registrar": ["Key-Systems GmbH"]} \ No newline at end of file diff --git a/test/target_default/realtek.com.tw b/test/target_default/realtek.com.tw new file mode 100644 index 0000000..2b20508 --- /dev/null +++ b/test/target_default/realtek.com.tw @@ -0,0 +1 @@ +{"contacts": {"admin": null, "tech": null, "registrant": {"city": "Hsinchu", "fax": "(03) 5774713", "name": "Mengze Du", "phone": "(03) 5780211 ext. 079", "street": "No.2\nInnovation Road II\nHsinchu\nScience Park", "organization": "\u745e\u6631\u534a\u5c0e\u9ad4\u80a1\u4efd\u6709\u9650\u516c\u53f8\nRealtek Semoconductor Co., Ltd", "country": "Taiwan", "email": "justindo@realtek.com"}, "billing": null}, "nameservers": ["ns1.realtek.com.tw", "ns2.realtek.com.tw"], "expiration_date": ["2018-05-31T00:00:00", "2018-05-31T00:00:00"], "creation_date": ["1997-05-01T00:00:00", "1997-05-01T00:00:00"], "raw": ["Domain Name: realtek.com.tw\nRegistrant:\n\u745e\u6631\u534a\u5c0e\u9ad4\u80a1\u4efd\u6709\u9650\u516c\u53f8\nRealtek Semoconductor Co., Ltd\nNo.2, Innovation Road II, Hsinchu,Science Park,Hsinchu , Taiwan\n\n Contact:\n Mengze Du justindo@realtek.com\n TEL: (03) 5780211 ext3079\n FAX: (03) 5774713\n\n Record expires on 2018-05-31 (YYYY-MM-DD)\n Record created on 1997-05-01 (YYYY-MM-DD)\n\n Domain servers in listed order:\n ns1.realtek.com.tw 60.250.210.254\n ns2.realtek.com.tw 60.248.182.29\n\nRegistration Service Provider: TWNIC\n\n\n"], "registrar": ["TWNIC"]} \ No newline at end of file diff --git a/test/target_default/via.com.tw b/test/target_default/via.com.tw new file mode 100644 index 0000000..feceb09 --- /dev/null +++ b/test/target_default/via.com.tw @@ -0,0 +1 @@ +{"contacts": {"admin": null, "tech": null, "registrant": {"city": "535", "fax": "2-22188924", "name": "Ben Chen", "phone": "2-22185452 ext. 6557", "street": "8F", "organization": "\u5a01\u76db\u96fb\u5b50\u80a1\u4efd\u6709\u9650\u516c\u53f8\nVIA Technologies, Inc.", "country": "Chung-Cheng Rd. Hsin-Tien", "email": "BenChen@via.com.tw"}, "billing": null}, "nameservers": ["tpns1.viatech.com.tw", "frns1.viatech.com.tw", "bjns1.viatech.com.tw"], "expiration_date": ["2024-05-31T00:00:00", "2024-05-31T00:00:00"], "creation_date": ["1985-05-20T00:00:00", "1985-05-20T00:00:00"], "raw": ["Domain Name: via.com.tw\nRegistrant:\n\u5a01\u76db\u96fb\u5b50\u80a1\u4efd\u6709\u9650\u516c\u53f8\nVIA Technologies, Inc.\n8F, 535, Chung-Cheng Rd. Hsin-Tien\n\n Contact:\n Ben Chen BenChen@via.com.tw\n TEL: 2-22185452#6557\n FAX: 2-22188924\n\n Record expires on 2024-05-31 (YYYY-MM-DD)\n Record created on 1985-05-20 (YYYY-MM-DD)\n\n Domain servers in listed order:\n tpns1.viatech.com.tw 61.66.243.23\n frns1.viatech.com.tw 12.47.63.7\n bjns1.viatech.com.tw 152.104.150.2\n\nRegistration Service Provider: TWNIC\n\n\n"], "registrar": ["TWNIC"]} \ No newline at end of file diff --git a/test/target_default/yahoo.com.tw b/test/target_default/yahoo.com.tw new file mode 100644 index 0000000..81482df --- /dev/null +++ b/test/target_default/yahoo.com.tw @@ -0,0 +1 @@ +{"contacts": {"admin": {"phone": "+1.4083493300", "fax": "+1.4083493301", "name": "Domain Administrator", "email": "domainadmin@yahoo-inc.com"}, "tech": {"phone": "+1.4083493300", "fax": "+1.4083493301", "name": "Domain Administrator", "email": "domainadmin@yahoo-inc.com"}, "registrant": {"city": "Sunnyvale", "fax": "+1.4083493301", "name": "Domain Administrator", "country": "US", "phone": "+1.4083493300", "state": "CA", "street": "701 First Avenue", "organization": "Yahoo! Inc.", "email": "domainadmin@yahoo-inc.com"}, "billing": null}, "nameservers": ["ns1.yahoo.com", "ns2.yahoo.com", "ns3.yahoo.com", "ns4.yahoo.com", "ns5.yahoo.com"], "expiration_date": ["2019-07-12T00:00:00", "2019-07-12T00:00:00"], "creation_date": ["1997-05-01T00:00:00", "1997-05-01T00:00:00"], "raw": ["Domain Name: yahoo.com.tw\n Registrant:\n Yahoo! Inc.\n Domain Administrator domainadmin@yahoo-inc.com\n +1.4083493300\n +1.4083493301\n 701 First Avenue \n Sunnyvale, CA\n US\n\n Administrative Contact:\n Domain Administrator domainadmin@yahoo-inc.com\n +1.4083493300\n +1.4083493301\n\n Technical Contact:\n Domain Administrator domainadmin@yahoo-inc.com\n +1.4083493300\n +1.4083493301\n\n Record expires on 2019-07-12 (YYYY-MM-DD)\n Record created on 1997-05-01 (YYYY-MM-DD)\n\n Domain servers in listed order:\n ns1.yahoo.com \n ns2.yahoo.com \n ns3.yahoo.com \n ns4.yahoo.com \n ns5.yahoo.com \n\nRegistration Service Provider: Markmonitor, Inc.\n\n[Provided by NeuStar Registry Gateway Services]\n\n"], "registrar": ["Markmonitor, Inc."]} \ No newline at end of file diff --git a/test/target_normalized/davicom.com.tw b/test/target_normalized/davicom.com.tw new file mode 100644 index 0000000..6cda7d4 --- /dev/null +++ b/test/target_normalized/davicom.com.tw @@ -0,0 +1 @@ +{"contacts": {"admin": null, "tech": null, "registrant": {"city": "Hsin-Chu", "fax": "(03)5646929", "name": "Alan Ma", "phone": "(03)5798797 ext. 8566", "street": "No. 6 Li-Hsin Rd. VI\nScience-Based Park", "organization": "\u806f\u5091\u570b\u969b\u80a1\u4efd\u6709\u9650\u516c\u53f8\nDavicom Semiconductor, Inc.", "country": "Taiwan, R.O.C.", "email": "alan_ma@davicom.com.tw"}, "billing": null}, "nameservers": ["davicom.com.tw"], "expiration_date": ["2017-05-31T00:00:00", "2017-05-31T00:00:00"], "creation_date": ["1997-05-01T00:00:00", "1997-05-01T00:00:00"], "raw": ["Domain Name: davicom.com.tw\nRegistrant:\n\u806f\u5091\u570b\u969b\u80a1\u4efd\u6709\u9650\u516c\u53f8\nDavicom Semiconductor, Inc.\nNo. 6 Li-Hsin Rd. VI, Science-Based Park, Hsin-Chu, Taiwan, R.O.C.\n\n Contact:\n Alan Ma alan_ma@davicom.com.tw\n TEL: (03)5798797 #8566\n FAX: (03)5646929\n\n Record expires on 2017-05-31 (YYYY-MM-DD)\n Record created on 1997-05-01 (YYYY-MM-DD)\n\n Domain servers in listed order:\n davicom.com.tw 60.250.193.73 \n davicom.com.tw 202.39.11.22 \n\nRegistration Service Provider: TWNIC\n\n\n"], "registrar": ["TWNIC"]} \ No newline at end of file diff --git a/test/target_normalized/google.com.tw b/test/target_normalized/google.com.tw new file mode 100644 index 0000000..05eb4f5 --- /dev/null +++ b/test/target_normalized/google.com.tw @@ -0,0 +1 @@ +{"contacts": {"admin": {"phone": "+1.6502530000", "fax": "+1.6506188571", "name": "DNS Admin", "email": "dns-admin@google.com"}, "tech": {"phone": "+1.6502530000", "fax": "+1.6506188571", "name": "DNS Admin", "email": "dns-admin@google.com"}, "registrant": {"city": "Mountain View", "fax": "+1.6506188571", "name": "DNS Admin", "country": "US", "phone": "+1.6502530000", "state": "CA", "street": "1600 Amphitheatre Parkway", "organization": "Google Inc.", "email": "dns-admin@google.com"}, "billing": null}, "nameservers": ["ns1.google.com", "ns2.google.com", "ns3.google.com", "ns4.google.com"], "expiration_date": ["2014-11-09T00:00:00", "2014-11-09T00:00:00"], "creation_date": ["2000-08-29T00:00:00", "2000-08-29T00:00:00"], "raw": ["Domain Name: google.com.tw\n Registrant:\n Google Inc.\n DNS Admin dns-admin@google.com\n +1.6502530000\n +1.6506188571\n 1600 Amphitheatre Parkway \n Mountain View, CA\n US\n\n Administrative Contact:\n DNS Admin dns-admin@google.com\n +1.6502530000\n +1.6506188571\n\n Technical Contact:\n DNS Admin dns-admin@google.com\n +1.6502530000\n +1.6506188571\n\n Record expires on 2014-11-09 (YYYY-MM-DD)\n Record created on 2000-08-29 (YYYY-MM-DD)\n\n Domain servers in listed order:\n ns1.google.com \n ns2.google.com \n ns3.google.com \n ns4.google.com \n\nRegistration Service Provider: Markmonitor, Inc.\n\n[Provided by NeuStar Registry Gateway Services]\n\n"], "registrar": ["Markmonitor, Inc."]} \ No newline at end of file diff --git a/test/target_normalized/pcmups.com.tw b/test/target_normalized/pcmups.com.tw new file mode 100644 index 0000000..7bf3439 --- /dev/null +++ b/test/target_normalized/pcmups.com.tw @@ -0,0 +1 @@ +{"contacts": {"admin": null, "tech": null, "registrant": {"city": "Taipei Hsien", "fax": "02-22251776", "name": "Amos Yu", "phone": "02-22258552 ext. 313", "street": "8F\nNo. 246\nLien Chen Road\nChung Ho City", "organization": "\u79d1\u98a8\u80a1\u4efd\u6709\u9650\u516c\u53f8\nPowercom Co., Ltd.", "country": "Taiwan ROC", "email": "market@upspowercom.com.tw"}, "billing": null}, "nameservers": ["ns.hinetserver.com", "ns2.hinetserver.com"], "expiration_date": ["2014-08-29T00:00:00", "2014-08-29T00:00:00"], "creation_date": ["2001-08-28T00:00:00", "2001-08-28T00:00:00"], "raw": ["Domain Name: pcmups.com.tw\nRegistrant:\n\u79d1\u98a8\u80a1\u4efd\u6709\u9650\u516c\u53f8\nPowercom Co., Ltd.\n8F, No. 246, Lien Chen Road, Chung Ho City, Taipei Hsien, Taiwan ROC\n\n Contact:\n Amos Yu market@upspowercom.com.tw\n TEL: 02-22258552#313\n FAX: 02-22251776\n\n Record expires on 2014-08-29 (YYYY-MM-DD)\n Record created on 2001-08-28 (YYYY-MM-DD)\n\n Domain servers in listed order:\n ns.hinetserver.com 61.63.79.1\n ns2.hinetserver.com 61.56.221.35\n\nRegistration Service Provider: SEEDNET\n\n\n"], "registrar": ["Seednet"]} \ No newline at end of file diff --git a/test/target_normalized/porn.com.tw b/test/target_normalized/porn.com.tw new file mode 100644 index 0000000..b16b012 --- /dev/null +++ b/test/target_normalized/porn.com.tw @@ -0,0 +1 @@ +{"contacts": {"admin": {"phone": "+44.1502566183", "name": "Jeffrey Williams", "email": "faiwot@wag1.com"}, "tech": {"phone": "+44.1502566183", "name": "Jeffrey Williams", "email": "faiwot@wag1.com"}, "registrant": {"city": "Lowestoft", "name": "Jeffrey Williams", "country": "GB", "phone": "+44.1502566183", "street": "95 Wavenet Crescent", "organization": "JW", "email": "faiwot@wag1.com"}, "billing": null}, "nameservers": ["ns1.parkingcrew.net", "ns2.parkingcrew.net"], "expiration_date": ["2015-02-24T00:00:00", "2015-02-24T00:00:00"], "creation_date": ["2006-02-24T00:00:00", "2006-02-24T00:00:00"], "raw": ["Domain Name: porn.com.tw\n Registrant:\n JW\n Jeffrey Williams faiwot@wag1.com\n +44.1502566183\n \n 95 Wavenet Crescent \n Lowestoft, \n GB\n\n Administrative Contact:\n Jeffrey Williams faiwot@wag1.com\n +44.1502566183\n \n\n Technical Contact:\n Jeffrey Williams faiwot@wag1.com\n +44.1502566183\n \n\n Record expires on 2015-02-24 (YYYY-MM-DD)\n Record created on 2006-02-24 (YYYY-MM-DD)\n\n Domain servers in listed order:\n ns1.parkingcrew.net \n ns2.parkingcrew.net \n\nRegistration Service Provider: Key-Systems GmbH\n\n[Provided by NeuStar Registry Gateway Services]\n\n"], "registrar": ["Key-Systems GmbH"]} \ No newline at end of file diff --git a/test/target_normalized/realtek.com.tw b/test/target_normalized/realtek.com.tw new file mode 100644 index 0000000..2b20508 --- /dev/null +++ b/test/target_normalized/realtek.com.tw @@ -0,0 +1 @@ +{"contacts": {"admin": null, "tech": null, "registrant": {"city": "Hsinchu", "fax": "(03) 5774713", "name": "Mengze Du", "phone": "(03) 5780211 ext. 079", "street": "No.2\nInnovation Road II\nHsinchu\nScience Park", "organization": "\u745e\u6631\u534a\u5c0e\u9ad4\u80a1\u4efd\u6709\u9650\u516c\u53f8\nRealtek Semoconductor Co., Ltd", "country": "Taiwan", "email": "justindo@realtek.com"}, "billing": null}, "nameservers": ["ns1.realtek.com.tw", "ns2.realtek.com.tw"], "expiration_date": ["2018-05-31T00:00:00", "2018-05-31T00:00:00"], "creation_date": ["1997-05-01T00:00:00", "1997-05-01T00:00:00"], "raw": ["Domain Name: realtek.com.tw\nRegistrant:\n\u745e\u6631\u534a\u5c0e\u9ad4\u80a1\u4efd\u6709\u9650\u516c\u53f8\nRealtek Semoconductor Co., Ltd\nNo.2, Innovation Road II, Hsinchu,Science Park,Hsinchu , Taiwan\n\n Contact:\n Mengze Du justindo@realtek.com\n TEL: (03) 5780211 ext3079\n FAX: (03) 5774713\n\n Record expires on 2018-05-31 (YYYY-MM-DD)\n Record created on 1997-05-01 (YYYY-MM-DD)\n\n Domain servers in listed order:\n ns1.realtek.com.tw 60.250.210.254\n ns2.realtek.com.tw 60.248.182.29\n\nRegistration Service Provider: TWNIC\n\n\n"], "registrar": ["TWNIC"]} \ No newline at end of file diff --git a/test/target_normalized/via.com.tw b/test/target_normalized/via.com.tw new file mode 100644 index 0000000..6ba8213 --- /dev/null +++ b/test/target_normalized/via.com.tw @@ -0,0 +1 @@ +{"contacts": {"admin": null, "tech": null, "registrant": {"city": "535", "fax": "2-22188924", "name": "Ben Chen", "phone": "2-22185452 ext. 6557", "street": "8F", "organization": "\u5a01\u76db\u96fb\u5b50\u80a1\u4efd\u6709\u9650\u516c\u53f8\nVIA Technologies, Inc.", "country": "Chung-Cheng Rd. Hsin-Tien", "email": "benchen@via.com.tw"}, "billing": null}, "nameservers": ["tpns1.viatech.com.tw", "frns1.viatech.com.tw", "bjns1.viatech.com.tw"], "expiration_date": ["2024-05-31T00:00:00", "2024-05-31T00:00:00"], "creation_date": ["1985-05-20T00:00:00", "1985-05-20T00:00:00"], "raw": ["Domain Name: via.com.tw\nRegistrant:\n\u5a01\u76db\u96fb\u5b50\u80a1\u4efd\u6709\u9650\u516c\u53f8\nVIA Technologies, Inc.\n8F, 535, Chung-Cheng Rd. Hsin-Tien\n\n Contact:\n Ben Chen BenChen@via.com.tw\n TEL: 2-22185452#6557\n FAX: 2-22188924\n\n Record expires on 2024-05-31 (YYYY-MM-DD)\n Record created on 1985-05-20 (YYYY-MM-DD)\n\n Domain servers in listed order:\n tpns1.viatech.com.tw 61.66.243.23\n frns1.viatech.com.tw 12.47.63.7\n bjns1.viatech.com.tw 152.104.150.2\n\nRegistration Service Provider: TWNIC\n\n\n"], "registrar": ["TWNIC"]} \ No newline at end of file diff --git a/test/target_normalized/yahoo.com.tw b/test/target_normalized/yahoo.com.tw new file mode 100644 index 0000000..81482df --- /dev/null +++ b/test/target_normalized/yahoo.com.tw @@ -0,0 +1 @@ +{"contacts": {"admin": {"phone": "+1.4083493300", "fax": "+1.4083493301", "name": "Domain Administrator", "email": "domainadmin@yahoo-inc.com"}, "tech": {"phone": "+1.4083493300", "fax": "+1.4083493301", "name": "Domain Administrator", "email": "domainadmin@yahoo-inc.com"}, "registrant": {"city": "Sunnyvale", "fax": "+1.4083493301", "name": "Domain Administrator", "country": "US", "phone": "+1.4083493300", "state": "CA", "street": "701 First Avenue", "organization": "Yahoo! Inc.", "email": "domainadmin@yahoo-inc.com"}, "billing": null}, "nameservers": ["ns1.yahoo.com", "ns2.yahoo.com", "ns3.yahoo.com", "ns4.yahoo.com", "ns5.yahoo.com"], "expiration_date": ["2019-07-12T00:00:00", "2019-07-12T00:00:00"], "creation_date": ["1997-05-01T00:00:00", "1997-05-01T00:00:00"], "raw": ["Domain Name: yahoo.com.tw\n Registrant:\n Yahoo! Inc.\n Domain Administrator domainadmin@yahoo-inc.com\n +1.4083493300\n +1.4083493301\n 701 First Avenue \n Sunnyvale, CA\n US\n\n Administrative Contact:\n Domain Administrator domainadmin@yahoo-inc.com\n +1.4083493300\n +1.4083493301\n\n Technical Contact:\n Domain Administrator domainadmin@yahoo-inc.com\n +1.4083493300\n +1.4083493301\n\n Record expires on 2019-07-12 (YYYY-MM-DD)\n Record created on 1997-05-01 (YYYY-MM-DD)\n\n Domain servers in listed order:\n ns1.yahoo.com \n ns2.yahoo.com \n ns3.yahoo.com \n ns4.yahoo.com \n ns5.yahoo.com \n\nRegistration Service Provider: Markmonitor, Inc.\n\n[Provided by NeuStar Registry Gateway Services]\n\n"], "registrar": ["Markmonitor, Inc."]} \ No newline at end of file