diff --git a/README.md b/README.md index ff14206..05c344b 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,8 @@ The manual (including install instructions) can be found in the doc/ directory. ## Important update notes +*2.3.0 and up*: Python 3 support was fixed. Creation date parsing for contacts was fixed; correct timestamps will now be returned, rather than unformatted ones - if your application relies on the broken variant, you'll need to change your code. Some additional parameters were added to the `net` and `parse` methods to facilitate NIC handle lookups; the defaults are backwards-compatible, and these changes should not have any consequences for your code. Thai WHOIS parsing was implemented, but is a little spotty - data may occasionally be incorrectly split up. Please submit a bug report if you run across any issues. + *2.2.0 and up*: The internal workings of `get_whois_raw` have been changed, to better facilitate parsing of WHOIS data from registries that may return multiple partial matches for a query, such as `whois.verisign-grs.com`. This change means that, by default, `get_whois_raw` will now strip out the part of such a response that does not pertain directly to the requested domain. If your application requires an unmodified raw WHOIS response and is calling `get_whois_raw` directly, you should use the new `never_cut` parameter to keep pythonwhois from doing this post-processing. As this is a potentially breaking behaviour change, the minor version has been bumped. ## It doesn't work! diff --git a/doc/usage.html b/doc/usage.html index 870ea7e..7fcb5c6 100644 --- a/doc/usage.html +++ b/doc/usage.html @@ -180,7 +180,7 @@ -

Using pythonwhois

<< back to index
This is a quick usage guide; pythonwhois is pretty simple.

Table of contents

Normalization

Before you start, it's important to understand the normalization functionality in pythonwhois. Since some WHOIS servers return data in all-uppercase or all-lowercase, and some registrants simply use the incorrect case themselves, reading WHOIS data can be a bit unpleasant.
pythonwhois attempts to solve this problem by optionally 'normalizing' WHOIS data. Depending on the kind of field, the parser will try to create a readable and consistent version of the value. The pwhois command-line utility uses normalization by default; when using the Python module it's disabled by default.
Normalization isn't perfect, and you shouldn't rely on it for technical purposes. It's intended for increasing human readability only. If you work with a lot of WHOIS data, it's recommended to turn off normalization or do your own post-processing.

From the commandline

pwhois [--raw] [--json] [-f PATH] DOMAIN
pwhois is the WHOIS tool that is included with pythonwhois. It's really just a script that you can run from your terminal, and that gives you nicely formatted WHOIS output. Normalization is turned on in pwhois by default, so it will try to make the output more readable (by fixing capitalization and such).
Example: Using pwhois
Code:
sh$ pwhois cryto.net
Output:
Status            : clientTransferProhibited
+		

Using pythonwhois

This is a quick usage guide; pythonwhois is pretty simple.

Table of contents

Normalization

Before you start, it's important to understand the normalization functionality in pythonwhois. Since some WHOIS servers return data in all-uppercase or all-lowercase, and some registrants simply use the incorrect case themselves, reading WHOIS data can be a bit unpleasant.
pythonwhois attempts to solve this problem by optionally 'normalizing' WHOIS data. Depending on the kind of field, the parser will try to create a readable and consistent version of the value. The pwhois command-line utility uses normalization by default; when using the Python module it's disabled by default.
Normalization isn't perfect, and you shouldn't rely on it for technical purposes. It's intended for increasing human readability only. If you work with a lot of WHOIS data, it's recommended to turn off normalization or do your own post-processing.

From the commandline

From your Python application

To start using pythonwhois, use import pythonwhois.
pythonwhois.get_whois(domain[, normalized=[]])
Retrieves and parses WHOIS data for a specified domain. Raises pythonwhois.shared.WhoisException if no root server for the TLD could be found.

Arguments

domain
The domain to WHOIS.
normalized
Optional. What data to normalize. By default, no data will be normalized. You can specify either a list of keys to normalize (see also the result reference below), an empty list (to turn off normalization), or True (to turn on normalization for all supported fields).

Returns

A nested structured object, consisting of dicts and lists. The only key that is always present is contacts, but the keys inside the dict that it contains may not be.
id
The Domain ID.
status
A list of current statuses of the domain at the registrar. May contain any string value.
creation_date
A list of datetime.datetime objects representing the creation date(s) of the domain.
expiration_date
A list of datetime.datetime objects representing the expiration date(s) of the domain.
updated_date
A list of datetime.datetime objects representing the update date(s) of the domain. Note that what an 'update date' entails, differs between WHOIS servers. For some, it means the last renewal data. For others, it means the last registrant info update. For yet others, it means the last update of their WHOIS database as a whole. This key is unlikely to be useful, unless you're trying to plot WHOIS data changes over time.
registrar
A list of registrar names. May contain any string value.
whois_server
A list of WHOIS servers refered to. This is unlikely to be a useful list.
nameservers
A list of nameservers for the domain, as indicated by the WHOIS server.
emails
A list of e-mail address for the domain. This list does not include e-mail addresses from registrant data, only e-mail addresses from other places in the WHOIS data such as abuse report instructions.
contacts
A dict containing contacts for the domain, each also a dict. Fields for these contacts are listed further down. If a specific type of contact was not listed for the domain, the key for it will still exist, but it will contain None.
registrant
The registrant or domain holder.
tech
The technical contact for the domain. May be either the registrar, or a party related to the registrant.
admin
The administrative contact for the domain.
billing
The billing contact for the domain.

Contact fields

These are the fields that any contact dict may contain. If certain information for a contact was not found, the corresponding key will be absent.
Important: Note that any of these fields may consist of multiple lines, although the address field is the only one that is likely to consist of multiple lines.
handle
The NIC handle for the contact.
name
The full name of the contact.
organization
The organization or company that the contact belongs to.
street
The street address of the contact (or organization).
postalcode
The postal code of the contact (or organization). This may or may not include a country prefix.
city
The city of the contact (or organization).
state
The state, province, or region of the contact (or organization). The actual values for this field vary widely.
country
The country of the contact (or organization).
email
The e-mail address of the contact (or organization).
phone
The phone number of the contact (or organization), including extension where applicable.
fax
The fax number of the contact (or organization), including extension where applicable.

When you need more control...

+[...]
There are several optional arguments that you can pass to pwhois to make it behave differently.
--raw
When you use this flag, pwhois will not attempt to parse the WHOIS data; it'll just follow redirects and output the raw data, delimited by double dashes (--).
--json
This flag will make pwhois output JSON instead of human-readable output. While not recommended, you can use this if you need parsed data in a non-Python application.
-f PATH
This will make pwhois read and parse WHOIS data from a specified file, instead of actually contacting a WHOIS server. Useful if you get your WHOIS data elsewhere.
Important: Note that when using -f PATH, pwhois will still expect a domain to be specified! What you enter here doesn't really matter, you can also just specify a single dot . for the domain.

From your Python application

To start using pythonwhois, use import pythonwhois.
pythonwhois.get_whois(domain[, normalized=[]])
Retrieves and parses WHOIS data for a specified domain. Raises pythonwhois.shared.WhoisException if no root server for the TLD could be found.

Arguments

domain
The domain to WHOIS.
normalized
Optional. What data to normalize. By default, no data will be normalized. You can specify either a list of keys to normalize (see also the result reference below), an empty list (to turn off normalization), or True (to turn on normalization for all supported fields).

Returns

A nested structured object, consisting of dicts and lists. The only key that is always present is contacts, but the keys inside the dict that it contains may not be.
id
The Domain ID.
status
A list of current statuses of the domain at the registrar. May contain any string value.
creation_date
A list of datetime.datetime objects representing the creation date(s) of the domain.
expiration_date
A list of datetime.datetime objects representing the expiration date(s) of the domain.
updated_date
A list of datetime.datetime objects representing the update date(s) of the domain. Note that what an 'update date' entails, differs between WHOIS servers. For some, it means the last renewal data. For others, it means the last registrant info update. For yet others, it means the last update of their WHOIS database as a whole. This key is unlikely to be useful, unless you're trying to plot WHOIS data changes over time.
registrar
A list of registrar names. May contain any string value.
whois_server
A list of WHOIS servers refered to. This is unlikely to be a useful list.
nameservers
A list of nameservers for the domain, as indicated by the WHOIS server.
emails
A list of e-mail address for the domain. This list does not include e-mail addresses from registrant data, only e-mail addresses from other places in the WHOIS data such as abuse report instructions.
contacts
A dict containing contacts for the domain, each also a dict. Fields for these contacts are listed further down. If a specific type of contact was not listed for the domain, the key for it will still exist, but it will contain None.
registrant
The registrant or domain holder.
tech
The technical contact for the domain. May be either the registrar, or a party related to the registrant.
admin
The administrative contact for the domain.
billing
The billing contact for the domain.

Contact fields

These are the fields that any contact dict may contain. If certain information for a contact was not found, the corresponding key will be absent.
Important: Note that any of these fields may consist of multiple lines, although the address field is the only one that is likely to consist of multiple lines.
handle
The NIC handle for the contact.
name
The full name of the contact.
organization
The organization or company that the contact belongs to.
street
The street address of the contact (or organization).
postalcode
The postal code of the contact (or organization). This may or may not include a country prefix.
city
The city of the contact (or organization).
state
The state, province, or region of the contact (or organization). The actual values for this field vary widely.
country
The country of the contact (or organization).
email
The e-mail address of the contact (or organization).
phone
The phone number of the contact (or organization), including extension where applicable.
fax
The fax number of the contact (or organization), including extension where applicable.

When you need more control...

pythonwhois.net.get_whois_raw(domain[, server="", rfc3490=True, never_cut=False, with_server_list=False])
Retrieves the raw WHOIS data for the specified domain, and returns it as a list of responses (one element for each WHOIS server queried). This method will keep following redirects, until it ends up at the right server (and all responses it picks up in the meantime, will be included). Raises pythonwhois.shared.WhoisException if no root server for the TLD could be found.
domain
The domain name to query for.
server
Optional. The WHOIS server to query. When not specified, it will default to the appropriate WHOIS server for the TLD.
rfc3490
Optional. If set to True, a given domain will be encoded through the toASCII method as documented in RFC3490 before its submission to the WHOIS service. If the domain isn't supplied in unicode, the method will handle the decoding by itself.
never_cut
Optional. If set to True, pythonwhois will never strip out data from the raw WHOIS responses, even if that data relates to a partial match, rather than the requested domain.
with_server_list
Optional. If set to True, pythonwhois will return a (response, server_list) tuple instead of just response, where the server_list contains a list of all the WHOIS servers that were queried to collect the raw data. The order of the list is from first (root) server to last server.
pythonwhois.net.get_root_server(domain)
Looks up the appropriate root server for a TLD, and returns it as a string. Raises pythonwhois.shared.WhoisException if no root server for the TLD could be found.
domain
The domain whose TLD you want to know the root WHOIS server for.
pythonwhois.parse.parse_raw_whois(raw_data[, normalized, never_query_handles=True, handle_server=""])
Parses the specified raw WHOIS data. It's useful to call this method manually if you receive your WHOIS data from elsewhere, and don't need the retrieval capabilities of pythonwhois. Returns an object like pythonwhois.get_whois does.
raw_data
A list of raw WHOIS responses to parse. This is the kind of list that pythonwhois.net.get_whois_raw outputs.
normalized
Optional. Like for pythonwhois.get_whois. Empty list or omitted to normalize nothing, True to normalize all supported fields, a list of keys if you only want certain keys to be normalized.
never_handle_queries
Optional. If this is enabled, pythonwhois won't try to resolve handles that require additional queries. Some WHOIS servers only provide NIC handles by default and require additional lookups to retrieve the associated contact information. If you are running an offline application (or have your own load distribution mechanism) and you don't want pythonwhois to make queries on your behalf, set this to True (the default). When using the get_whois method, this is set to False behind the scenes, and handles will be automatically resolved.
handle_server
Optional. When never_handle_queries is set to False, you should specify the server responsible for handle lookups here. This is usually the last server in a WHOIS chain. get_whois will set this for you automatically.
diff --git a/doc/usage.zpy b/doc/usage.zpy index cb78f18..9782a97 100644 --- a/doc/usage.zpy +++ b/doc/usage.zpy @@ -160,7 +160,7 @@ To start using pythonwhois, use `import pythonwhois`. ## When you need more control... -^ pythonwhois.net.get_whois_raw(**domain**[, **server=""**, **rfc3490=True**, **never_cut=False**]) +^ pythonwhois.net.get_whois_raw(**domain**[, **server=""**, **rfc3490=True**, **never_cut=False**, **with_server_list=False**]) Retrieves the raw WHOIS data for the specified domain, and returns it as a list of responses (one element for each WHOIS server queried). This method will keep following redirects, until it ends up at the right server (and all responses it picks up in the meantime, will be included). Raises `pythonwhois.shared.WhoisException` if no root server for the TLD could be found. @@ -175,6 +175,9 @@ To start using pythonwhois, use `import pythonwhois`. never_cut:: **Optional.** If set to `True`, pythonwhois will never strip out data from the raw WHOIS responses, **even** if that data relates to a partial match, rather than the requested domain. + + with_server_list:: + **Optional.** If set to `True`, `pythonwhois` will return a `(response, server_list)` tuple instead of just `response`, where the `server_list` contains a list of all the WHOIS servers that were queried to collect the raw data. The order of the list is from first (root) server to last server. ^ pythonwhois.net.get_root_server(**domain**) @@ -184,7 +187,7 @@ To start using pythonwhois, use `import pythonwhois`. domain:: The domain whose TLD you want to know the root WHOIS server for. -^ pythonwhois.parse.parse_raw_whois(**raw_data**[, **normalized**]) +^ pythonwhois.parse.parse_raw_whois(**raw_data**[, **normalized**, **never_query_handles=True**, **handle_server=""**]) Parses the specified raw WHOIS data. It's useful to call this method manually if you receive your WHOIS data from elsewhere, and don't need the retrieval capabilities of pythonwhois. Returns an object like `pythonwhois.get_whois` does. @@ -193,4 +196,9 @@ To start using pythonwhois, use `import pythonwhois`. normalized:: **Optional.** Like for `pythonwhois.get_whois`. Empty list or omitted to normalize nothing, `True` to normalize all supported fields, a list of keys if you only want certain keys to be normalized. - + + never_handle_queries:: + **Optional.** If this is enabled, `pythonwhois` won't try to resolve handles that require additional queries. Some WHOIS servers only provide NIC handles by default and require additional lookups to retrieve the associated contact information. If you are running an offline application (or have your own load distribution mechanism) and you don't want `pythonwhois` to make queries on your behalf, set this to `True` (the default). When using the `get_whois` method, this is set to `False` behind the scenes, and handles will be automatically resolved. + + handle_server:: + **Optional.** When `never_handle_queries` is set to `False`, you should specify the server responsible for handle lookups here. This is usually the last server in a WHOIS chain. `get_whois` will set this for you automatically. diff --git a/pwhois b/pwhois index 0909762..2ec86d9 100755 --- a/pwhois +++ b/pwhois @@ -3,7 +3,7 @@ import argparse, pythonwhois, json, datetime try: from collections import OrderedDict -except ImportError, e: +except ImportError as e: from ordereddict import OrderedDict parser = argparse.ArgumentParser(description="Retrieves and parses WHOIS data for a domain name.") @@ -20,18 +20,22 @@ def json_fallback(obj): return obj if args.file is None: - data = pythonwhois.net.get_whois_raw(args.domain[0]) + data, server_list = pythonwhois.net.get_whois_raw(args.domain[0], with_server_list=True) else: + server_list = [] with open(args.file, "r") as f: data = f.read().split("\n--\n") if args.raw == True: - print "\n--\n".join(data) + print("\n--\n".join([x.encode("utf-8") for x in data])) else: - parsed = pythonwhois.parse.parse_raw_whois(data, normalized=True) + if len(server_list) > 0: + parsed = pythonwhois.parse.parse_raw_whois(data, normalized=True, never_query_handles=False, handle_server=server_list[-1]) + else: + parsed = pythonwhois.parse.parse_raw_whois(data, normalized=True) if args.json == True: - print json.dumps(parsed, default=json_fallback) + print(json.dumps(parsed, default=json_fallback)) else: data_map = OrderedDict({}) @@ -46,18 +50,18 @@ else: data_map["emails"] = ("E-mail address", "+") widest_label = 0 - for key, value in data_map.iteritems(): + for key, value in data_map.items(): if len(value[0]) > widest_label: widest_label = len(value[0]) - for key, value in data_map.iteritems(): + for key, value in data_map.items(): if key in parsed and parsed[key] is not None: label = value[0] + (" " * (widest_label - len(value[0]))) + " :" if value[1] == 1: - print "%s %s" % (label, parsed[key][0]) + print("%s %s" % (label, parsed[key][0])) elif value[1] == "+": for item in parsed[key]: - print "%s %s" % (label, item) + print("%s %s" % (label, item)) if parsed["contacts"] is not None: # This defines the contacts shown in the output @@ -80,23 +84,24 @@ else: data_map["email"] = "E-mail address" data_map["phone"] = "Phone number" data_map["fax"] = "Fax number" + data_map["creationdate"] = "Created" data_map["changedate"] = "Last changed" for contact in contacts_map: if parsed["contacts"][contact] is not None: contact_data = parsed["contacts"][contact] - print "\n" + contacts_map[contact] + print("\n" + contacts_map[contact]) - for key, value in data_map.iteritems(): + for key, value in data_map.items(): if len(value) > widest_label: widest_label = len(value) - for key, value in data_map.iteritems(): + for key, value in data_map.items(): if key in contact_data and contact_data[key] is not None: label = " " + value + (" " * (widest_label - len(value))) + " :" - actual_data = str(contact_data[key]) + actual_data = contact_data[key] if "\n" in actual_data: # Indent multi-line values properly lines = actual_data.split("\n") actual_data = "\n".join([lines[0]] + [(" " * (widest_label + 7)) + line for line in lines[1:]]) - print "%s %s" % (label, actual_data) + print("%s %s" % (label, actual_data)) diff --git a/pythonwhois/__init__.py b/pythonwhois/__init__.py index b9eabf6..47639c3 100644 --- a/pythonwhois/__init__.py +++ b/pythonwhois/__init__.py @@ -1,8 +1,11 @@ from . import net, parse def get_whois(domain, normalized=[]): - raw_data = net.get_whois_raw(domain) - return parse.parse_raw_whois(raw_data, normalized=normalized) + raw_data, server_list = net.get_whois_raw(domain, with_server_list=True) + # Unlisted handles will be looked up on the last WHOIS server that was queried. This may be changed to also query + # other servers in the future, if it turns out that there are cases where the last WHOIS server in the chain doesn't + # actually hold the handle contact details, but another WHOIS server in the chain does. + return parse.parse_raw_whois(raw_data, normalized=normalized, never_query_handles=False, handle_server=server_list[-1]) def whois(*args, **kwargs): raise Exception("The whois() method has been replaced by a different method (with a different API), since pythonwhois 2.0. Either install the older pythonwhois 1.2.3, or change your code to use the new API.") diff --git a/pythonwhois/net.py b/pythonwhois/net.py index 982162e..ec54014 100644 --- a/pythonwhois/net.py +++ b/pythonwhois/net.py @@ -1,8 +1,8 @@ -import socket, re +import socket, re, sys from codecs import encode, decode from . import shared -def get_whois_raw(domain, server="", previous=[], rfc3490=True, never_cut=False): +def get_whois_raw(domain, server="", previous=[], rfc3490=True, never_cut=False, with_server_list=False, server_list=[]): # Sometimes IANA simply won't give us the right root WHOIS server exceptions = { ".ac.uk": "whois.ja.net", @@ -12,12 +12,16 @@ def get_whois_raw(domain, server="", previous=[], rfc3490=True, never_cut=False) } if rfc3490: - domain = encode( domain if type(domain) is unicode else decode(domain, "utf8"), "idna" ) + if sys.version_info < (3, 0): + domain = encode( domain if type(domain) is unicode else decode(domain, "utf8"), "idna" ) + else: + domain = encode(domain, "idna").decode("ascii") - if len(previous) == 0: + if len(previous) == 0 and server == "": # Root query + server_list = [] # Otherwise it retains the list on subsequent queries, for some reason. is_exception = False - for exception, exc_serv in exceptions.iteritems(): + for exception, exc_serv in exceptions.items(): if domain.endswith(exception): is_exception = True target_server = exc_serv @@ -26,7 +30,7 @@ def get_whois_raw(domain, server="", previous=[], rfc3490=True, never_cut=False) target_server = get_root_server(domain) else: target_server = server - if domain.endswith(".jp") and target_server == "whois.jprs.jp": + if target_server == "whois.jprs.jp": request_domain = "%s/e" % domain # Suppress Japanese output elif domain.endswith(".de") and ( target_server == "whois.denic.de" or target_server == "de.whois-servers.net" ): request_domain = "-T dn,ace %s" % domain # regional specific stuff @@ -52,14 +56,18 @@ def get_whois_raw(domain, server="", previous=[], rfc3490=True, never_cut=False) break if never_cut == False: new_list = [response] + previous + server_list.append(target_server) for line in [x.strip() for x in response.splitlines()]: match = re.match("(refer|whois server|referral url|whois server|registrar whois):\s*([^\s]+\.[^\s]+)", line, re.IGNORECASE) if match is not None: referal_server = match.group(2) - if referal_server != server: + if referal_server != server and "://" not in referal_server: # We want to ignore anything non-WHOIS (eg. HTTP) for now. # Referal to another WHOIS server... - return get_whois_raw(domain, referal_server, new_list) - return new_list + return get_whois_raw(domain, referal_server, new_list, server_list=server_list, with_server_list=with_server_list) + if with_server_list: + return (new_list, server_list) + else: + return new_list def get_root_server(domain): data = whois_request(domain, "whois.iana.org") @@ -73,11 +81,11 @@ def get_root_server(domain): def whois_request(domain, server, port=43): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((server, port)) - sock.send("%s\r\n" % domain) - buff = "" + sock.send(("%s\r\n" % domain).encode("utf-8")) + buff = b"" while True: data = sock.recv(1024) if len(data) == 0: break buff += data - return buff + return buff.decode("utf-8") diff --git a/pythonwhois/parse.py b/pythonwhois/parse.py index 040ddbc..661de61 100644 --- a/pythonwhois/parse.py +++ b/pythonwhois/parse.py @@ -1,11 +1,13 @@ from __future__ import print_function import re, sys, datetime +from . import net, shared grammar = { "_data": { 'id': ['Domain ID:[ ]*(?P.+)'], 'status': ['\[Status\]\s*(?P.+)', 'Status\s*:\s?(?P.+)', + '\[State\]\s*(?P.+)', '^state:\s*(?P.+)'], 'creation_date': ['\[Created on\]\s*(?P.+)', 'Created on[.]*: [a-zA-Z]+, (?P.+)', @@ -27,7 +29,9 @@ grammar = { 'Domain Create Date\s?[.]*:?\s*?(?P.+)', 'Domain Registration Date\s?[.]*:?\s*?(?P.+)', 'created:\s*(?P.+)', + '\[Registered Date\]\s*(?P.+)', 'created-date:\s*(?P.+)', + 'Domain Name Commencement Date: (?P.+)', 'registered:\s*(?P.+)', 'registration:\s*(?P.+)'], 'expiration_date': ['\[Expires on\]\s*(?P.+)', @@ -37,7 +41,7 @@ grammar = { 'Expiration date\s*:\s?(?P.+)', 'Expires on:\s?(?P.+)', 'Expires on\s?[.]*:\s?(?P.+)\.', - 'Expiry Date\s?[.]*:\s?(?P.+)', + 'Exp(?:iry)? Date\s?[.]*:\s?(?P.+)', 'Expiry\s*:\s?(?P.+)', 'Domain Currently Expires\s?[.]*:\s?(?P.+)', 'Record will expire on\s?[.]*:\s?(?P.+)', @@ -50,6 +54,7 @@ grammar = { 'Domain Expiration Date\s?[.]*:?\s*?(?P.+)', 'paid-till:\s*(?P.+)', 'expiration_date:\s*(?P.+)', + 'expire-date:\s*(?P.+)', 'renewal:\s*(?P.+)', 'expire:\s*(?P.+)'], 'updated_date': ['\[Last Updated\]\s*(?P.+)', @@ -72,6 +77,8 @@ grammar = { 'Last Update\s?[.]*:\s?(?P.+)', 'Last updated on (?P.+) [a-z]{3,4}', 'Last updated:\s*(?P.+)', + 'last-updated:\s*(?P.+)', + '\[Last Update\]\s*(?P.+) \([A-Z]+\)', 'Last update of whois database:\s?[a-z]{3}, (?P.+) [a-z]{3,4}'], 'registrar': ['registrar:\s*(?P.+)', 'Registrar:\s*(?P.+)', @@ -82,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.+)'], @@ -93,6 +101,7 @@ grammar = { 'Name Server[.]+ (?P[^[\s]+)', 'Hostname:\s*(?P[^\s]+)', 'DNS[0-9]+:\s*(?P.+)', + ' DNS:\s*(?P.+)', 'ns[0-9]+:\s*(?P.+)', 'NS [0-9]+\s*:\s*(?P.+)', '\[Name Server\]\s*(?P.+)', @@ -142,6 +151,178 @@ grammar = { } } +def preprocess_regex(regex): + # Fix for #2; prevents a ridiculous amount of varying size permutations. + regex = re.sub(r"\\s\*\(\?P<([^>]+)>\.\+\)", r"\s*(?P<\1>\S.*)", regex) + # Experimental fix for #18; removes unnecessary variable-size whitespace + # matching, since we're stripping results anyway. + regex = re.sub(r"\[ \]\*\(\?P<([^>]+)>\.\*\)", r"(?P<\1>.*)", regex) + return regex + +registrant_regexes = [ + " Registrant:[ ]*\n (?P.*)\n (?P.*)\n (?P.*)\n (?P.*), (?P.*) (?P.*)\n (?P.*)\n(?: Phone: (?P.*)\n)? Email: (?P.*)\n", # Corporate Domains, Inc. + "Registrant:\n (?P.+)\n (?P.+)\n(?: (?P.*)\n)?(?: (?P.*)\n)? (?P.+), (?P.+)\n (?P.+)\n (?P.+)\n (?P.+)\n\n", # OVH + "(?:Registrant ID:(?P.+)\n)?Registrant Name:(?P.*)\n(?:Registrant Organization:(?P.*)\n)?Registrant Street1?:(?P.*)\n(?:Registrant Street2:(?P.*)\n)?(?:Registrant Street3:(?P.*)\n)?Registrant City:(?P.*)\nRegistrant State/Province:(?P.*)\nRegistrant Postal Code:(?P.*)\nRegistrant Country:(?P.*)\nRegistrant Phone:(?P.*)\n(?:Registrant Phone Ext.:(?P.*)\n)?(?:Registrant FAX:(?P.*)\n)?(?:Registrant FAX Ext.:(?P.*)\n)?Registrant Email:(?P.*)", # Public Interest Registry (.org), nic.pw, No-IP.com + "Registrant ID:(?P.+)\nRegistrant Name:(?P.*)\n(?:Registrant Organization:(?P.*)\n)?Registrant Address1?:(?P.*)\n(?:Registrant Address2:(?P.*)\n)?(?:Registrant Address3:(?P.*)\n)?Registrant City:(?P.*)\nRegistrant State/Province:(?P.*)\nRegistrant Country/Economy:(?P.*)\nRegistrant Postal Code:(?P.*)\nRegistrant Phone:(?P.*)\n(?:Registrant Phone Ext.:(?P.*)\n)?(?:Registrant FAX:(?P.*)\n)?(?:Registrant FAX Ext.:(?P.*)\n)?Registrant E-mail:(?P.*)", # .ME, DotAsia + "Registrant ID:\s*(?P.+)\nRegistrant Name:\s*(?P.+)\nRegistrant Organization:\s*(?P.*)\nRegistrant Address1:\s*(?P.+)\nRegistrant Address2:\s*(?P.*)\nRegistrant City:\s*(?P.+)\nRegistrant State/Province:\s*(?P.+)\nRegistrant Postal Code:\s*(?P.+)\nRegistrant Country:\s*(?P.+)\nRegistrant Country Code:\s*(?P.+)\nRegistrant Phone Number:\s*(?P.+)\nRegistrant Email:\s*(?P.+)\n", # .CO Internet + "Registrant Contact: (?P.+)\nRegistrant Organization: (?P.+)\nRegistrant Name: (?P.+)\nRegistrant Street: (?P.+)\nRegistrant City: (?P.+)\nRegistrant Postal Code: (?P.+)\nRegistrant State: (?P.+)\nRegistrant Country: (?P.+)\nRegistrant Phone: (?P.*)\nRegistrant Phone Ext: (?P.*)\nRegistrant Fax: (?P.*)\nRegistrant Fax Ext: (?P.*)\nRegistrant Email: (?P.*)\n", # Key-Systems GmbH + "(?:Registrant ID:[ ]*(?P.*)\n)?Registrant Name:[ ]*(?P.*)\n(?:Registrant Organization:[ ]*(?P.*)\n)?Registrant Street:[ ]*(?P.+)\n(?:Registrant Street:[ ]*(?P.+)\n)?(?:Registrant Street:[ ]*(?P.+)\n)?Registrant City:[ ]*(?P.+)\nRegistrant State(?:\/Province)?:[ ]*(?P.*)\nRegistrant Postal Code:[ ]*(?P.+)\nRegistrant Country:[ ]*(?P.+)\n(?:Registrant Phone:[ ]*(?P.*)\n)?(?:Registrant Phone Ext:[ ]*(?P.*)\n)?(?:Registrant Fax:[ ]*(?P.*)\n)?(?:Registrant Fax Ext:[ ]*(?P.*)\n)?(?:Registrant Email:[ ]*(?P.+)\n)?", # WildWestDomains, GoDaddy, Namecheap/eNom, Ascio, Musedoma (.museum), EuroDNS, nic.ps + "Registrant\n(?: (?P.+)\n)? (?P.+)\n Email:(?P.+)\n (?P.+)\n(?: (?P.+)\n)? (?P.+) (?P.+)\n (?P.+)\n Tel: (?P.+)\n\n", # internet.bs + " Registrant Contact Details:[ ]*\n (?P.*)\n (?P.*)[ ]{2,}\((?P.*)\)\n (?P.*)\n(?: (?P.*)\n)?(?: (?P.*)\n)? (?P.*)\n (?P.*),(?P.*)\n (?P.*)\n Tel. (?P.*)", # Whois.com + "owner-id:[ ]*(?P.*)\n(?:owner-organization:[ ]*(?P.*)\n)?owner-name:[ ]*(?P.*)\nowner-street:[ ]*(?P.*)\nowner-city:[ ]*(?P.*)\nowner-zip:[ ]*(?P.*)\nowner-country:[ ]*(?P.*)\n(?:owner-phone:[ ]*(?P.*)\n)?(?:owner-fax:[ ]*(?P.*)\n)?owner-email:[ ]*(?P.*)", # InterNetworX + "Registrant:\n registrant_org: (?P.*)\n registrant_name: (?P.*)\n registrant_email: (?P.*)\n registrant_address: (?P
.*)\n registrant_city: (?P.*)\n registrant_state: (?P.*)\n registrant_zip: (?P.*)\n registrant_country: (?P.*)\n registrant_phone: (?P.*)", # Bellnames + "Holder of domain name:\n(?P[\S\s]+)\n(?P.+)\n(?P[A-Z0-9-]+)\s+(?P.+)\n(?P.+)\nContractual Language", # nic.ch + "\n\n(?:Owner)?\s+: (?P.*)\n(?:\s+: (?P.*)\n)?\s+: (?P.*)\n\s+: (?P.*)\n\s+: (?P.*)\n\s+: (?P.*)\n", # nic.io + "Contact Information:\n\[Name\]\s*(?P.*)\n\[Email\]\s*(?P.*)\n\[Web Page\]\s*(?P.*)\n\[Postal code\]\s*(?P.*)\n\[Postal Address\]\s*(?P.*)\n(?:\s+(?P.*)\n)?(?:\s+(?P.*)\n)?\[Phone\]\s*(?P.*)\n\[Fax\]\s*(?P.*)\n", # jprs.jp + "g\. \[Organization\] (?P.+)\n", # .co.jp registrations at jprs.jp + "Registrant ID:(?P.*)\nRegistrant Name:(?P.*)\n(?:Registrant Organization:(?P.*)\n)?Registrant Address1:(?P.*)\n(?:Registrant Address2:(?P.*)\n)?(?:Registrant Address3:(?P.*)\n)?Registrant City:(?P.*)\n(?:Registrant State/Province:(?P.*)\n)?Registrant Postal Code:(?P.*)\nRegistrant Country:(?P.*)\nRegistrant Country Code:.*\nRegistrant Phone Number:(?P.*)\n(?:Registrant Facsimile Number:(?P.*)\n)?Registrant Email:(?P.*)", # .US, .biz (NeuStar) + "Registrant\n Name: (?P.+)\n(?: Organization: (?P.+)\n)? ContactID: (?P.+)\n(?: Address: (?P.+)\n(?: (?P.+)\n(?: (?P.+)\n)?)? (?P.+)\n (?P.+)\n (?P.+)\n (?P.+)\n)?(?: Created: (?P.+)\n)?(?: Last Update: (?P.+)\n)?", # nic.it + " Organisation Name[.]* (?P.*)\n Organisation Address[.]* (?P.*)\n Organisation Address[.]* (?P.*)\n(?: Organisation Address[.]* (?P.*)\n)? Organisation Address[.]* (?P.*)\n Organisation Address[.]* (?P.*)\n Organisation Address[.]* (?P.*)\n Organisation Address[.]* (?P.*)", # Melbourne IT (what a horrid format...) + "Registrant:[ ]*(?P.+)\n[\s\S]*Eligibility Name:[ ]*(?P.+)\n[\s\S]*Registrant Contact ID:[ ]*(?P.+)\n", # .au business + "Eligibility Type:[ ]*Citizen\/Resident\n[\s\S]*Registrant Contact ID:[ ]*(?P.+)\n[\s\S]*Registrant Contact Name:[ ]*(?P.+)\n", # .au individual + "Registrant:[ ]*(?P.+)\n[\s\S]*Eligibility Type:[ ]*(Higher Education Institution|Company|Incorporated Association|Other)\n[\s\S]*Registrant Contact ID:[ ]*(?P.+)\n[\s\S]*Registrant Contact Name:[ ]*(?P.+)\n", # .au educational, company, 'incorporated association' (non-profit?), other (spotted for linux.conf.au, unsure if also for others) + " Registrant:\n (?P.+)\n\n Registrant type:\n .*\n\n Registrant's address:\n The registrant .* opted to have", # Nominet (.uk) with hidden address + " Registrant:\n (?P.+)\n\n[\s\S]* Registrant type:\n .*\n\n Registrant's address:\n (?P.+)\n(?: (?P.+)\n(?: (?P.+)\n)??)?? (?P[^0-9\n]+)\n(?: (?P.+)\n)? (?P.+)\n (?P.+)\n\n", # Nominet (.uk) with visible address + "Domain Owner:\n\t(?P.+)\n\n[\s\S]*?(?:Registrant Contact:\n\t(?P.+))?\n\nRegistrant(?:'s)? (?:a|A)ddress:(?:\n\t(?P.+)\n(?:\t(?P.+)\n)?(?:\t(?P.+)\n)?\t(?P.+)\n\t(?P.+))?\n\t(?P.+)(?:\n\t(?P.+) \(Phone\)\n\t(?P.+) \(FAX\)\n\t(?P.+))?\n\n", # .ac.uk - what a mess... + "Registrant ID: (?P.+)\nRegistrant: (?P.+)\nRegistrant Contact Email: (?P.+)", # .cn (CNNIC) + "Registrant contact:\n (?P.+)\n (?P.*)\n (?P.+), (?P.+) (?P.+) (?P.+)\n\n", # Fabulous.com + "registrant-name:\s*(?P.+)\nregistrant-type:\s*(?P.+)\nregistrant-address:\s*(?P.+)\nregistrant-postcode:\s*(?P.+)\nregistrant-city:\s*(?P.+)\nregistrant-country:\s*(?P.+)\n(?:registrant-phone:\s*(?P.+)\n)?(?:registrant-email:\s*(?P.+)\n)?", # Hetzner + "Registrant Contact Information :[ ]*\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n\n", # GAL Communication + "Contact Information : For Customer # [0-9]+[ ]*\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n\n", # GAL Communication alternative (private WHOIS) format? + "Registrant:\n Name: (?P.+)\n City: (?P.+)\n State: (?P.+)\n Country: (?P.+)\n", # Akky (.com.mx) + " Registrant:\n (?P.+)\n (?P.+)\n (?P.+) (?P\S+),[ ]+(?P.+)\n (?P.+)", # .am + "Domain Holder: (?P.+)\n(?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?))?)?)?)?)?)?, (?P[^.,]+), (?P.+), (?P.+)\n(?P.+)\n(?P[A-Z]+)\n", # .co.th, format 1 + "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) + "org:\s+(?P.+)", # nic.ru (organization) +] + +tech_contact_regexes = [ + " Technical Contact:[ ]*\n (?P.*)\n (?P.*)\n (?P.*)\n (?P.*), (?P.*) (?P.*)\n (?P.*)\n(?: Phone: (?P.*)\n)? Email: (?P.*)\n", # Corporate Domains, Inc. + "Technical Contact:\n (?P.+)\n (?P.+)\n(?: (?P.*)\n)?(?: (?P.*)\n)? (?P.+), (?P.+)\n (?P.+)\n (?P.+)\n (?P.+)\n\n", # OVH + "(?:Tech ID:(?P.+)\n)?Tech Name:(?P.*)\n(:?Tech Organization:(?P.*)\n)?Tech Street1?:(?P.*)\n(?:Tech Street2:(?P.*)\n)?(?:Tech Street3:(?P.*)\n)?Tech City:(?P.*)\nTech State/Province:(?P.*)\nTech Postal Code:(?P.*)\nTech Country:(?P.*)\nTech Phone:(?P.*)\n(?:Tech Phone Ext.:(?P.*)\n)?(?:Tech FAX:(?P.*)\n)?(?:Tech FAX Ext.:(?P.*)\n)?Tech Email:(?P.*)", # Public Interest Registry (.org), nic.pw, No-IP.com + "Tech(?:nical)? ID:(?P.+)\nTech(?:nical)? Name:(?P.*)\n(?:Tech(?:nical)? Organization:(?P.*)\n)?Tech(?:nical)? Address1?:(?P.*)\n(?:Tech(?:nical)? Address2:(?P.*)\n)?(?:Tech(?:nical)? Address3:(?P.*)\n)?Tech(?:nical)? City:(?P.*)\nTech(?:nical)? State/Province:(?P.*)\nTech(?:nical)? Country/Economy:(?P.*)\nTech(?:nical)? Postal Code:(?P.*)\nTech(?:nical)? Phone:(?P.*)\n(?:Tech(?:nical)? Phone Ext.:(?P.*)\n)?(?:Tech(?:nical)? FAX:(?P.*)\n)?(?:Tech(?:nical)? FAX Ext.:(?P.*)\n)?Tech(?:nical)? E-mail:(?P.*)", # .ME, DotAsia + "Technical Contact ID:\s*(?P.+)\nTechnical Contact Name:\s*(?P.+)\nTechnical Contact Organization:\s*(?P.*)\nTechnical Contact Address1:\s*(?P.+)\nTechnical Contact Address2:\s*(?P.*)\nTechnical Contact City:\s*(?P.+)\nTechnical Contact State/Province:\s*(?P.+)\nTechnical Contact Postal Code:\s*(?P.+)\nTechnical Contact Country:\s*(?P.+)\nTechnical Contact Country Code:\s*(?P.+)\nTechnical Contact Phone Number:\s*(?P.+)\nTechnical Contact Email:\s*(?P.+)\n", # .CO Internet + "Tech Contact: (?P.+)\nTech Organization: (?P.+)\nTech Name: (?P.+)\nTech Street: (?P.+)\nTech City: (?P.+)\nTech Postal Code: (?P.+)\nTech State: (?P.+)\nTech Country: (?P.+)\nTech Phone: (?P.*)\nTech Phone Ext: (?P.*)\nTech Fax: (?P.*)\nTech Fax Ext: (?P.*)\nTech Email: (?P.*)\n", # Key-Systems GmbH + "(?:Tech ID:[ ]*(?P.*)\n)?Tech[ ]*Name:[ ]*(?P.*)\n(?:Tech[ ]*Organization:[ ]*(?P.*)\n)?Tech[ ]*Street:[ ]*(?P.+)\n(?:Tech[ ]*Street:[ ]*(?P.+)\n)?(?:Tech[ ]*Street:[ ]*(?P.+)\n)?Tech[ ]*City:[ ]*(?P.+)\nTech[ ]*State(?:\/Province)?:[ ]*(?P.*)\nTech[ ]*Postal[ ]*Code:[ ]*(?P.+)\nTech[ ]*Country:[ ]*(?P.+)\n(?:Tech[ ]*Phone:[ ]*(?P.*)\n)?(?:Tech[ ]*Phone[ ]*Ext:[ ]*(?P.*)\n)?(?:Tech[ ]*Fax:[ ]*(?P.*)\n)?(?:Tech[ ]*Fax[ ]*Ext:\s*?(?P.*)\n)?(?:Tech[ ]*Email:[ ]*(?P.+)\n)?", # WildWestDomains, GoDaddy, Namecheap/eNom, Ascio, Musedoma (.museum), EuroDNS, nic.ps + "Technical Contact\n(?: (?P.+)\n)? (?P.+)\n Email:(?P.+)\n (?P.+)\n(?: (?P.+)\n)? (?P.+) (?P.+)\n (?P.+)\n Tel: (?P.+)\n\n", # internet.bs + " Technical Contact Details:[ ]*\n (?P.*)\n (?P.*)[ ]{2,}\((?P.*)\)\n (?P.*)\n(?: (?P.*)\n)?(?: (?P.*)\n)? (?P.*)\n (?P.*),(?P.*)\n (?P.*)\n Tel. (?P.*)", # Whois.com + "tech-id:[ ]*(?P.*)\n(?:tech-organization:[ ]*(?P.*)\n)?tech-name:[ ]*(?P.*)\ntech-street:[ ]*(?P.*)\ntech-city:[ ]*(?P.*)\ntech-zip:[ ]*(?P.*)\ntech-country:[ ]*(?P.*)\n(?:tech-phone:[ ]*(?P.*)\n)?(?:tech-fax:[ ]*(?P.*)\n)?tech-email:[ ]*(?P.*)", # InterNetworX + "Technical Contact:\n tech_org: (?P.*)\n tech_name: (?P.*)\n tech_email: (?P.*)\n tech_address: (?P
.*)\n tech_city: (?P.*)\n tech_state: (?P.*)\n tech_zip: (?P.*)\n tech_country: (?P.*)\n tech_phone: (?P.*)", # Bellnames + "Technical contact:\n(?P[\S\s]+)\n(?P.+)\n(?P[A-Z0-9-]+)\s+(?P.+)\n(?P.+)\n\n", # nic.ch + "Tech Contact ID:[ ]*(?P.+)\nTech Contact Name:[ ]*(?P.+)", # .au + "Technical Contact ID:(?P.*)\nTechnical Contact Name:(?P.*)\n(?:Technical Contact Organization:(?P.*)\n)?Technical Contact Address1:(?P.*)\n(?:Technical Contact Address2:(?P.*)\n)?(?:Technical Contact Address3:(?P.*)\n)?Technical Contact City:(?P.*)\n(?:Technical Contact State/Province:(?P.*)\n)?Technical Contact Postal Code:(?P.*)\nTechnical Contact Country:(?P.*)\nTechnical Contact Country Code:.*\nTechnical Contact Phone Number:(?P.*)\n(?:Technical Contact Facsimile Number:(?P.*)\n)?Technical Contact Email:(?P.*)", # .US, .biz (NeuStar) + "Technical Contacts\n Name: (?P.+)\n(?: Organization: (?P.+)\n)? ContactID: (?P.+)\n(?: Address: (?P.+)\n(?: (?P.+)\n(?: (?P.+)\n)?)? (?P.+)\n (?P.+)\n (?P.+)\n (?P.+)\n)?(?: Created: (?P.+)\n)?(?: Last Update: (?P.+)\n)?", # nic.it // NOTE: Why does this say 'Contacts'? Can it have multiple? + "Tech Name[.]* (?P.*)\n Tech Address[.]* (?P.*)\n Tech Address[.]* (?P.*)\n(?: Tech Address[.]* (?P.*)\n)? Tech Address[.]* (?P.*)\n Tech Address[.]* (?P.*)\n Tech Address[.]* (?P.*)\n Tech Address[.]* (?P.*)\n Tech Email[.]* (?P.*)\n Tech Phone[.]* (?P.*)\n Tech Fax[.]* (?P.*)", # Melbourne IT + "Technical contact:\n(?: (?P.+)\n)? (?P.+)\n (?P.+)\n (?P.+)\n (?P.+), (?P.+) (?P.+) (?P.+)\n Phone: (?P.*)\n Fax: (?P.*)\n", # Fabulous.com + "tech-c-name:\s*(?P.+)\ntech-c-type:\s*(?P.+)\ntech-c-address:\s*(?P.+)\ntech-c-postcode:\s*(?P.+)\ntech-c-city:\s*(?P.+)\ntech-c-country:\s*(?P.+)\n(?:tech-c-phone:\s*(?P.+)\n)?(?:tech-c-email:\s*(?P.+)\n)?", # Hetzner + "Admin Contact Information :[ ]*\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n\n", # GAL Communication + " Technical contact:\n (?P.+)\n (?P.*)\n (?P.+)\n (?P.+) (?P\S+),[ ]+(?P.+)\n (?P.+)\n (?P.+)\n (?P.*)\n (?P.*)", # .am + "Technical:\n\s*Name:\s*(?P.*)\n\s*Organisation:\s*(?P.*)\n\s*Language:.*\n\s*Phone:\s*(?P.*)\n\s*Fax:\s*(?P.*)\n\s*Email:\s*(?P.*)\n", # EURid + "\[Zone-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 + "Technical Contact:\n Name: (?P.+)\n City: (?P.+)\n State: (?P.+)\n Country: (?P.+)\n", # Akky (.com.mx) + "Tech Contact: (?P.+)\n(?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 1 + "Tech Contact: (?P.+)\n(?P.+)\n(?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?))?)?)?)?)?)?\n(?P.+), (?P.+)\n(?P.+)\n(?P[A-Z]+)\n", # .co.th, format 2 + "Tech Contact: (?P.+)\n(?P.+)\n(?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?)(?:,+ (?P.+?))?)?)?)?)?)?, (?P.+)\n(?P.+)\n(?P[A-Z]+)\n", # .co.th, format 3 + "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) +] + +admin_contact_regexes = [ + " Administrative Contact:[ ]*\n (?P.*)\n (?P.*)\n (?P.*)\n (?P.*), (?P.*) (?P.*)\n (?P.*)\n(?: Phone: (?P.*)\n)? Email: (?P.*)\n", # Corporate Domains, Inc. + "Administrative Contact:\n (?P.+)\n (?P.+)\n(?: (?P.*)\n)?(?: (?P.*)\n)? (?P.+), (?P.+)\n (?P.+)\n (?P.+)\n (?P.+)\n\n", # OVH + "(?:Admin ID:(?P.+)\n)?Admin Name:(?P.*)\n(?:Admin Organization:(?P.*)\n)?Admin Street1?:(?P.*)\n(?:Admin Street2:(?P.*)\n)?(?:Admin Street3:(?P.*)\n)?Admin City:(?P.*)\nAdmin State/Province:(?P.*)\nAdmin Postal Code:(?P.*)\nAdmin Country:(?P.*)\nAdmin Phone:(?P.*)\n(?:Admin Phone Ext.:(?P.*)\n)?(?:Admin FAX:(?P.*)\n)?(?:Admin FAX Ext.:(?P.*)\n)?Admin Email:(?P.*)", # Public Interest Registry (.org), nic.pw, No-IP.com + "Admin(?:istrative)? ID:(?P.+)\nAdmin(?:istrative)? Name:(?P.*)\n(?:Admin(?:istrative)? Organization:(?P.*)\n)?Admin(?:istrative)? Address1?:(?P.*)\n(?:Admin(?:istrative)? Address2:(?P.*)\n)?(?:Admin(?:istrative)? Address3:(?P.*)\n)?Admin(?:istrative)? City:(?P.*)\nAdmin(?:istrative)? State/Province:(?P.*)\nAdmin(?:istrative)? Country/Economy:(?P.*)\nAdmin(?:istrative)? Postal Code:(?P.*)\nAdmin(?:istrative)? Phone:(?P.*)\n(?:Admin(?:istrative)? Phone Ext.:(?P.*)\n)?(?:Admin(?:istrative)? FAX:(?P.*)\n)?(?:Admin(?:istrative)? FAX Ext.:(?P.*)\n)?Admin(?:istrative)? E-mail:(?P.*)", # .ME, DotAsia + "Administrative Contact ID:\s*(?P.+)\nAdministrative Contact Name:\s*(?P.+)\nAdministrative Contact Organization:\s*(?P.*)\nAdministrative Contact Address1:\s*(?P.+)\nAdministrative Contact Address2:\s*(?P.*)\nAdministrative Contact City:\s*(?P.+)\nAdministrative Contact State/Province:\s*(?P.+)\nAdministrative Contact Postal Code:\s*(?P.+)\nAdministrative Contact Country:\s*(?P.+)\nAdministrative Contact Country Code:\s*(?P.+)\nAdministrative Contact Phone Number:\s*(?P.+)\nAdministrative Contact Email:\s*(?P.+)\n", # .CO Internet + "Admin Contact: (?P.+)\nAdmin Organization: (?P.+)\nAdmin Name: (?P.+)\nAdmin Street: (?P.+)\nAdmin City: (?P.+)\nAdmin State: (?P.+)\nAdmin Postal Code: (?P.+)\nAdmin Country: (?P.+)\nAdmin Phone: (?P.*)\nAdmin Phone Ext: (?P.*)\nAdmin Fax: (?P.*)\nAdmin Fax Ext: (?P.*)\nAdmin Email: (?P.*)\n", # Key-Systems GmbH + "(?:Admin ID:[ ]*(?P.*)\n)?Admin[ ]*Name:[ ]*(?P.*)\n(?:Admin[ ]*Organization:[ ]*(?P.*)\n)?Admin[ ]*Street:[ ]*(?P.+)\n(?:Admin[ ]*Street:[ ]*(?P.+)\n)?(?:Admin[ ]*Street:[ ]*(?P.+)\n)?Admin[ ]*City:[ ]*(?P.+)\nAdmin[ ]*State(?:\/Province)?:[ ]*(?P.*)\nAdmin[ ]*Postal[ ]*Code:[ ]*(?P.+)\nAdmin[ ]*Country:[ ]*(?P.+)\n(?:Admin[ ]*Phone:[ ]*(?P.*)\n)?(?:Admin[ ]*Phone[ ]*Ext:[ ]*(?P.*)\n)?(?:Admin[ ]*Fax:[ ]*(?P.*)\n)?(?:Admin[ ]*Fax[ ]*Ext:\s*?(?P.*)\n)?(?:Admin[ ]*Email:[ ]*(?P.+)\n)?", # WildWestDomains, GoDaddy, Namecheap/eNom, Ascio, Musedoma (.museum), EuroDNS, nic.ps + "Administrative Contact\n(?: (?P.+)\n)? (?P.+)\n Email:(?P.+)\n (?P.+)\n(?: (?P.+)\n)? (?P.+) (?P.+)\n (?P.+)\n Tel: (?P.+)\n\n", # internet.bs + " Administrative Contact Details:[ ]*\n (?P.*)\n (?P.*)[ ]{2,}\((?P.*)\)\n (?P.*)\n(?: (?P.*)\n)?(?: (?P.*)\n)? (?P.*)\n (?P.*),(?P.*)\n (?P.*)\n Tel. (?P.*)", # Whois.com + "admin-id:[ ]*(?P.*)\n(?:admin-organization:[ ]*(?P.*)\n)?admin-name:[ ]*(?P.*)\nadmin-street:[ ]*(?P.*)\nadmin-city:[ ]*(?P.*)\nadmin-zip:[ ]*(?P.*)\nadmin-country:[ ]*(?P.*)\n(?:admin-phone:[ ]*(?P.*)\n)?(?:admin-fax:[ ]*(?P.*)\n)?admin-email:[ ]*(?P.*)", # InterNetworX + "Administrative Contact:\n admin_org: (?P.*)\n admin_name: (?P.*)\n admin_email: (?P.*)\n admin_address: (?P
.*)\n admin_city: (?P.*)\n admin_state: (?P.*)\n admin_zip: (?P.*)\n admin_country: (?P.*)\n admin_phone: (?P.*)", # Bellnames + "Administrative Contact ID:(?P.*)\nAdministrative Contact Name:(?P.*)\n(?:Administrative Contact Organization:(?P.*)\n)?Administrative Contact Address1:(?P.*)\n(?:Administrative Contact Address2:(?P.*)\n)?(?:Administrative Contact Address3:(?P.*)\n)?Administrative Contact City:(?P.*)\n(?:Administrative Contact State/Province:(?P.*)\n)?Administrative Contact Postal Code:(?P.*)\nAdministrative Contact Country:(?P.*)\nAdministrative Contact Country Code:.*\nAdministrative Contact Phone Number:(?P.*)\n(?:Administrative Contact Facsimile Number:(?P.*)\n)?Administrative Contact Email:(?P.*)", # .US, .biz (NeuStar) + "Admin Contact\n Name: (?P.+)\n(?: Organization: (?P.+)\n)? ContactID: (?P.+)\n(?: Address: (?P.+)\n(?: (?P.+)\n(?: (?P.+)\n)?)? (?P.+)\n (?P.+)\n (?P.+)\n (?P.+)\n)?(?: Created: (?P.+)\n)?(?: Last Update: (?P.+)\n)?", # nic.it + "Admin Name[.]* (?P.*)\n Admin Address[.]* (?P.*)\n Admin Address[.]* (?P.*)\n(?: Admin Address[.]* (?P.*)\n)? Admin Address[.]* (?P.*)\n Admin Address[.]* (?P.*)\n Admin Address[.]* (?P.*)\n Admin Address[.]* (?P.*)\n Admin Email[.]* (?P.*)\n Admin Phone[.]* (?P.*)\n Admin Fax[.]* (?P.*)", # Melbourne IT + "Administrative contact:\n(?: (?P.+)\n)? (?P.+)\n (?P.+)\n (?P.+)\n (?P.+), (?P.+) (?P.+) (?P.+)\n Phone: (?P.*)\n Fax: (?P.*)\n", # Fabulous.com + "admin-c-name:\s*(?P.+)\nadmin-c-type:\s*(?P.+)\nadmin-c-address:\s*(?P.+)\nadmin-c-postcode:\s*(?P.+)\nadmin-c-city:\s*(?P.+)\nadmin-c-country:\s*(?P.+)\n(?:admin-c-phone:\s*(?P.+)\n)?(?:admin-c-email:\s*(?P.+)\n)?", # Hetzner + "Tech Contact Information :[ ]*\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n\n", # GAL Communication + " 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) +] + +billing_contact_regexes = [ + "(?:Billing ID:(?P.+)\n)?Billing Name:(?P.*)\nBilling Organization:(?P.*)\nBilling Street1:(?P.*)\n(?:Billing Street2:(?P.*)\n)?(?:Billing Street3:(?P.*)\n)?Billing City:(?P.*)\nBilling State/Province:(?P.*)\nBilling Postal Code:(?P.*)\nBilling Country:(?P.*)\nBilling Phone:(?P.*)\n(?:Billing Phone Ext.:(?P.*)\n)?(?:Billing FAX:(?P.*)\n)?(?:Billing FAX Ext.:(?P.*)\n)?Billing Email:(?P.*)", # nic.pw, No-IP.com + "Billing ID:(?P.+)\nBilling Name:(?P.*)\n(?:Billing Organization:(?P.*)\n)?Billing Address1?:(?P.*)\n(?:Billing Address2:(?P.*)\n)?(?:Billing Address3:(?P.*)\n)?Billing City:(?P.*)\nBilling State/Province:(?P.*)\nBilling Country/Economy:(?P.*)\nBilling Postal Code:(?P.*)\nBilling Phone:(?P.*)\n(?:Billing Phone Ext.:(?P.*)\n)?(?:Billing FAX:(?P.*)\n)?(?:Billing FAX Ext.:(?P.*)\n)?Billing E-mail:(?P.*)", # DotAsia + "Billing Contact ID:\s*(?P.+)\nBilling Contact Name:\s*(?P.+)\nBilling Contact Organization:\s*(?P.*)\nBilling Contact Address1:\s*(?P.+)\nBilling Contact Address2:\s*(?P.*)\nBilling Contact City:\s*(?P.+)\nBilling Contact State/Province:\s*(?P.+)\nBilling Contact Postal Code:\s*(?P.+)\nBilling Contact Country:\s*(?P.+)\nBilling Contact Country Code:\s*(?P.+)\nBilling Contact Phone Number:\s*(?P.+)\nBilling Contact Email:\s*(?P.+)\n", # .CO Internet + "Billing Contact: (?P.+)\nBilling Organization: (?P.+)\nBilling Name: (?P.+)\nBilling Street: (?P.+)\nBilling City: (?P.+)\nBilling Postal Code: (?P.+)\nBilling State: (?P.+)\nBilling Country: (?P.+)\nBilling Phone: (?P.*)\nBilling Phone Ext: (?P.*)\nBilling Fax: (?P.*)\nBilling Fax Ext: (?P.*)\nBilling Email: (?P.*)\n", # Key-Systems GmbH + "(?:Billing ID:[ ]*(?P.*)\n)?Billing[ ]*Name:[ ]*(?P.*)\n(?:Billing[ ]*Organization:[ ]*(?P.*)\n)?Billing[ ]*Street:[ ]*(?P.+)\n(?:Billing[ ]*Street:[ ]*(?P.+)\n)?Billing[ ]*City:[ ]*(?P.+)\nBilling[ ]*State\/Province:[ ]*(?P.+)\nBilling[ ]*Postal[ ]*Code:[ ]*(?P.+)\nBilling[ ]*Country:[ ]*(?P.+)\n(?:Billing[ ]*Phone:[ ]*(?P.*)\n)?(?:Billing[ ]*Phone[ ]*Ext:[ ]*(?P.*)\n)?(?:Billing[ ]*Fax:[ ]*(?P.*)\n)?(?:Billing[ ]*Fax[ ]*Ext:\s*?(?P.*)\n)?(?:Billing[ ]*Email:[ ]*(?P.+)\n)?", # Musedoma (.museum) + "Billing Contact:\n (?P.+)\n (?P.+)\n(?: (?P.*)\n)?(?: (?P.*)\n)? (?P.+), (?P.+)\n (?P.+)\n (?P.+)\n (?P.+)\n\n", # OVH + " Billing Contact Details:[ ]*\n (?P.*)\n (?P.*)[ ]{2,}\((?P.*)\)\n (?P.*)\n(?: (?P.*)\n)?(?: (?P.*)\n)? (?P.*)\n (?P.*),(?P.*)\n (?P.*)\n Tel. (?P.*)", # Whois.com + "billing-id:[ ]*(?P.*)\n(?:billing-organization:[ ]*(?P.*)\n)?billing-name:[ ]*(?P.*)\nbilling-street:[ ]*(?P.*)\nbilling-city:[ ]*(?P.*)\nbilling-zip:[ ]*(?P.*)\nbilling-country:[ ]*(?P.*)\n(?:billing-phone:[ ]*(?P.*)\n)?(?:billing-fax:[ ]*(?P.*)\n)?billing-email:[ ]*(?P.*)", # InterNetworX + "Billing Contact:\n bill_org: (?P.*)\n bill_name: (?P.*)\n bill_email: (?P.*)\n bill_address: (?P
.*)\n bill_city: (?P.*)\n bill_state: (?P.*)\n bill_zip: (?P.*)\n bill_country: (?P.*)\n bill_phone: (?P.*)", # Bellnames + "Billing Contact ID:(?P.*)\nBilling Contact Name:(?P.*)\n(?:Billing Contact Organization:(?P.*)\n)?Billing Contact Address1:(?P.*)\n(?:Billing Contact Address2:(?P.*)\n)?(?:Billing Contact Address3:(?P.*)\n)?Billing Contact City:(?P.*)\n(?:Billing Contact State/Province:(?P.*)\n)?Billing Contact Postal Code:(?P.*)\nBilling Contact Country:(?P.*)\nBilling Contact Country Code:.*\nBilling Contact Phone Number:(?P.*)\n(?:Billing Contact Facsimile Number:(?P.*)\n)?Billing Contact Email:(?P.*)", # .US, .biz (NeuStar) + "Billing contact:\n(?: (?P.+)\n)? (?P.+)\n (?P.+)\n (?P.+)\n (?P.+), (?P.+) (?P.+) (?P.+)\n Phone: (?P.*)\n Fax: (?P.*)\n", # Fabulous.com + "Billing Contact Information :[ ]*\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n[ ]+(?P.*)\n\n", # GAL Communication + "Billing Contact:\n Name: (?P.+)\n City: (?P.+)\n State: (?P.+)\n Country: (?P.+)\n", # Akky (.com.mx) +] + +# Some registries use NIC handle references instead of directly listing contacts... +nic_contact_references = { + "registrant": [ + "registrant:\s*(?P.+)", # nic.at + "owner-contact:\s*(?P.+)", # LCN.com + "holder-c:\s*(?P.+)", # AFNIC + "holder:\s*(?P.+)", # iis.se (they apparently want to be difficult, and won't give you contact info for the handle over their WHOIS service) + ], + "tech": [ + "tech-c:\s*(?P.+)", # nic.at, AFNIC, iis.se + "technical-contact:\s*(?P.+)", # LCN.com + "n\. \[Technical Contact\] (?P.+)\n", #.co.jp + ], + "admin": [ + "admin-c:\s*(?P.+)", # nic.at, AFNIC, iis.se + "admin-contact:\s*(?P.+)", # LCN.com + "m\. \[Administrative Contact\] (?P.+)\n", # .co.jp + ], + "billing": [ + "billing-c:\s*(?P.+)", # iis.se + "billing-contact:\s*(?P.+)", # LCN.com + ] +} + +# Why do the below? The below is meant to handle with an edge case (issue #2) where a partial match followed +# by a failure, for a regex containing the \s*.+ pattern, would send the regex module on a wild goose hunt for +# matching positions. The workaround is to use \S.* instead of .+, but in the interest of keeping the regexes +# consistent and compact, it's more practical to do this (predictable) conversion on runtime. +# FIXME: This breaks on NIC contact regex for nic.at. Why? +registrant_regexes = [preprocess_regex(regex) for regex in registrant_regexes] +tech_contact_regexes = [preprocess_regex(regex) for regex in tech_contact_regexes] +admin_contact_regexes = [preprocess_regex(regex) for regex in admin_contact_regexes] +billing_contact_regexes = [preprocess_regex(regex) for regex in billing_contact_regexes] + +nic_contact_regexes = [ + "personname:\s*(?P.+)\norganization:\s*(?P.+)\nstreet address:\s*(?P.+)\npostal code:\s*(?P.+)\ncity:\s*(?P.+)\ncountry:\s*(?P.+)\n(?:phone:\s*(?P.+)\n)?(?:fax-no:\s*(?P.+)\n)?(?:e-mail:\s*(?P.+)\n)?nic-hdl:\s*(?P.+)\nchanged:\s*(?P.+)", # nic.at + "contact-handle:[ ]*(?P.+)\ncontact:[ ]*(?P.+)\n(?:organisation:[ ]*(?P.+)\n)?address:[ ]*(?P.+)\n(?:address:[ ]*(?P.+)\n)?(?:address:[ ]*(?P.+)\n)?(?:address:[ ]*(?P.+)\n)?address:[ ]*(?P.+)\naddress:[ ]*(?P.+)\naddress:[ ]*(?P.+)\naddress:[ ]*(?P.+)\n(?:phone:[ ]*(?P.+)\n)?(?:fax:[ ]*(?P.+)\n)?(?:email:[ ]*(?P.+)\n)?", # LCN.com + "Contact Information:\na\. \[JPNIC Handle\] (?P.+)\nc\. \[Last, First\] (?P.+), (?P.+)\nd\. \[E-Mail\] (?P.+)\ng\. \[Organization\] (?P.+)\nl\. \[Division\] (?P.+)\nn\. \[Title\] (?P.+)\no\. \[TEL\] (?P<phone>.+)\np\. \[FAX\] (?P<fax>.+)\ny\. \[Reply Mail\] .*\n\[Last Update\] (?P<changedate>.+) \(JST\)\n", # JPRS .co.jp contact handle lookup + "person:\s*(?P<name>.+)\nnic-hdl:\s*(?P<handle>.+)\n", # .ie + "nic-hdl:\s+(?P<handle>.+)\nperson:\s+(?P<name>.+)\n(?:e-mail:\s+(?P<email>.+)\n)?(?:address:\s+(?P<street1>.+?)(?:,+ (?P<street2>.+?)(?:,+ (?P<street3>.+?)(?:,+ (?P<street4>.+?)(?:,+ (?P<street5>.+?)(?:,+ (?P<street6>.+?)(?:,+ (?P<street7>.+?))?)?)?)?)?)?, (?P<city>.+), (?P<state>.+), (?P<country>.+)\n)?(?:phone:\s+(?P<phone>.+)\n)?(?:fax-no:\s+(?P<fax>.+)\n)?", # nic.ir, individual - this is a nasty one. + "nic-hdl:\s+(?P<handle>.+)\norg:\s+(?P<organization>.+)\n(?:e-mail:\s+(?P<email>.+)\n)?(?:address:\s+(?P<street1>.+?)(?:,+ (?P<street2>.+?)(?:,+ (?P<street3>.+?)(?:,+ (?P<street4>.+?)(?:,+ (?P<street5>.+?)(?:,+ (?P<street6>.+?)(?:,+ (?P<street7>.+?))?)?)?)?)?)?, (?P<city>.+), (?P<state>.+), (?P<country>.+)\n)?(?:phone:\s+(?P<phone>.+)\n)?(?:fax-no:\s+(?P<fax>.+)\n)?", # nic.ir, organization + "nic-hdl:\s*(?P<handle>.+)\ntype:\s*(?P<type>.+)\ncontact:\s*(?P<name>.+)\n(?:.+\n)*?(?:address:\s*(?P<street1>.+)\naddress:\s*(?P<street2>.+)\naddress:\s*(?P<street3>.+)\naddress:\s*(?P<country>.+)\n)?(?:phone:\s*(?P<phone>.+)\n)?(?:fax-no:\s*(?P<fax>.+)\n)?(?:.+\n)*?(?:e-mail:\s*(?P<email>.+)\n)?(?:.+\n)*?changed:\s*(?P<changedate>[0-9]{2}\/[0-9]{2}\/[0-9]{4}).*\n", # AFNIC madness without country field + "nic-hdl:\s*(?P<handle>.+)\ntype:\s*(?P<type>.+)\ncontact:\s*(?P<name>.+)\n(?:.+\n)*?(?:address:\s*(?P<street1>.+)\n)?(?:address:\s*(?P<street2>.+)\n)?(?:address:\s*(?P<street3>.+)\n)?(?:phone:\s*(?P<phone>.+)\n)?(?:fax-no:\s*(?P<fax>.+)\n)?(?:.+\n)*?(?:e-mail:\s*(?P<email>.+)\n)?(?:.+\n)*?changed:\s*(?P<changedate>[0-9]{2}\/[0-9]{2}\/[0-9]{4}).*\n", # AFNIC madness any country -at all- + "nic-hdl:\s*(?P<handle>.+)\ntype:\s*(?P<type>.+)\ncontact:\s*(?P<name>.+)\n(?:.+\n)*?(?:address:\s*(?P<street1>.+)\n)?(?:address:\s*(?P<street2>.+)\n)?(?:address:\s*(?P<street3>.+)\n)?(?:address:\s*(?P<street4>.+)\n)?country:\s*(?P<country>.+)\n(?:phone:\s*(?P<phone>.+)\n)?(?:fax-no:\s*(?P<fax>.+)\n)?(?:.+\n)*?(?:e-mail:\s*(?P<email>.+)\n)?(?:.+\n)*?changed:\s*(?P<changedate>[0-9]{2}\/[0-9]{2}\/[0-9]{4}).*\n", # AFNIC madness with country field +] if sys.version_info < (3, 0): def is_string(data): @@ -153,7 +334,7 @@ else: return isinstance(data, str) -def parse_raw_whois(raw_data, normalized=[]): +def parse_raw_whois(raw_data, normalized=[], never_query_handles=True, handle_server=""): data = {} raw_data = [segment.replace("\r", "") for segment in raw_data] # Carriage returns are the devil @@ -174,7 +355,7 @@ def parse_raw_whois(raw_data, normalized=[]): data[rule_key] = [val] # Whois.com is a bit special... Fabulous.com also seems to use this format. As do some others. - match = re.search("^\s?Name\s?[Ss]ervers:\s*\n((?:\s*.+\n)+?\s?)\n", segment, re.MULTILINE) + match = re.search("^\s?Name\s?[Ss]ervers:?\s*\n((?:\s*.+\n)+?\s?)\n", segment, re.MULTILINE) if match is not None: chunk = match.group(1) for match in re.findall("[ ]*(.+)\n", chunk): @@ -251,9 +432,33 @@ def parse_raw_whois(raw_data, normalized=[]): match = re.search('ren-status:\s*(.+)', segment) if match is not None: data["status"].insert(0, match.group(1).strip()) + # nic.it gives us the registrar in a multi-line format... + match = re.search('Registrar\n Organization: (.+)\n', segment) + if match is not None: + data["registrar"] = [match.group(1).strip()] + # HKDNR (.hk) provides a weird nameserver format with too much whitespace + match = re.search("Name Servers Information:\n\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()] + # ... 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) + data["contacts"] = parse_registrants(raw_data, never_query_handles, handle_server) # Parse dates try: @@ -323,17 +528,21 @@ 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: for key in ("email",): if key in contact and contact[key] is not None and (normalized == True or key in normalized): - if isinstance(contact[key], str): + if is_string(contact[key]): contact[key] = contact[key].lower() else: contact[key] = [item.lower() for item in contact[key]] @@ -353,43 +562,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) @@ -490,157 +703,12 @@ def remove_suffixes(data): return cleaned_list -def preprocess_regex(regex): - # Fix for #2; prevents a ridiculous amount of varying size permutations. - regex = re.sub(r"\\s\*\(\?P<([^>]+)>\.\+\)", r"\s*(?P<\1>\S.*)", regex) - # Experimental fix for #18; removes unnecessary variable-size whitespace - # matching, since we're stripping results anyway. - regex = re.sub(r"\[ \]\*\(\?P<([^>]+)>\.\*\)", r"(?P<\1>.*)", regex) - return regex - -def parse_registrants(data): +def parse_registrants(data, never_query_handles=True, handle_server=""): registrant = None tech_contact = None billing_contact = None admin_contact = None - registrant_regexes = [ - " Registrant:[ ]*\n (?P<organization>.*)\n (?P<name>.*)\n (?P<street>.*)\n (?P<city>.*), (?P<state>.*) (?P<postalcode>.*)\n (?P<country>.*)\n(?: Phone: (?P<phone>.*)\n)? Email: (?P<email>.*)\n", # Corporate Domains, Inc. - "Registrant:\n (?P<name>.+)\n (?P<street1>.+)\n(?: (?P<street2>.*)\n)?(?: (?P<street3>.*)\n)? (?P<postalcode>.+), (?P<city>.+)\n (?P<country>.+)\n (?P<phone>.+)\n (?P<email>.+)\n\n", # OVH - "Registrant ID:(?P<handle>.+)\nRegistrant Name:(?P<name>.*)\n(?:Registrant Organization:(?P<organization>.*)\n)?Registrant Street1?:(?P<street1>.*)\n(?:Registrant Street2:(?P<street2>.*)\n)?(?:Registrant Street3:(?P<street3>.*)\n)?Registrant City:(?P<city>.*)\nRegistrant State/Province:(?P<state>.*)\nRegistrant Postal Code:(?P<postalcode>.*)\nRegistrant Country:(?P<country>.*)\nRegistrant Phone:(?P<phone>.*)\n(?:Registrant Phone Ext.:(?P<phone_ext>.*)\n)?(?:Registrant FAX:(?P<fax>.*)\n)?(?:Registrant FAX Ext.:(?P<fax_ext>.*)\n)?Registrant Email:(?P<email>.*)", # Public Interest Registry (.org), nic.pw - "Registrant ID:(?P<handle>.+)\nRegistrant Name:(?P<name>.*)\n(?:Registrant Organization:(?P<organization>.*)\n)?Registrant Address1?:(?P<street1>.*)\n(?:Registrant Address2:(?P<street2>.*)\n)?(?:Registrant Address3:(?P<street3>.*)\n)?Registrant City:(?P<city>.*)\nRegistrant State/Province:(?P<state>.*)\nRegistrant Country/Economy:(?P<country>.*)\nRegistrant Postal Code:(?P<postalcode>.*)\nRegistrant Phone:(?P<phone>.*)\n(?:Registrant Phone Ext.:(?P<phone_ext>.*)\n)?(?:Registrant FAX:(?P<fax>.*)\n)?(?:Registrant FAX Ext.:(?P<fax_ext>.*)\n)?Registrant E-mail:(?P<email>.*)", # .ME, DotAsia - "Registrant ID:\s*(?P<handle>.+)\nRegistrant Name:\s*(?P<name>.+)\nRegistrant Organization:\s*(?P<organization>.*)\nRegistrant Address1:\s*(?P<street1>.+)\nRegistrant Address2:\s*(?P<street2>.*)\nRegistrant City:\s*(?P<city>.+)\nRegistrant State/Province:\s*(?P<state>.+)\nRegistrant Postal Code:\s*(?P<postalcode>.+)\nRegistrant Country:\s*(?P<country>.+)\nRegistrant Country Code:\s*(?P<country_code>.+)\nRegistrant Phone Number:\s*(?P<phone>.+)\nRegistrant Email:\s*(?P<email>.+)\n", # .CO Internet - "Registrant Contact: (?P<handle>.+)\nRegistrant Organization: (?P<organization>.+)\nRegistrant Name: (?P<name>.+)\nRegistrant Street: (?P<street>.+)\nRegistrant City: (?P<city>.+)\nRegistrant Postal Code: (?P<postalcode>.+)\nRegistrant State: (?P<state>.+)\nRegistrant Country: (?P<country>.+)\nRegistrant Phone: (?P<phone>.*)\nRegistrant Phone Ext: (?P<phone_ext>.*)\nRegistrant Fax: (?P<fax>.*)\nRegistrant Fax Ext: (?P<fax_ext>.*)\nRegistrant Email: (?P<email>.*)\n", # Key-Systems GmbH - "(?:Registrant ID:[ ]*(?P<handle>.*)\n)?Registrant Name:[ ]*(?P<name>.*)\n(?:Registrant Organization:[ ]*(?P<organization>.*)\n)?Registrant Street:[ ]*(?P<street1>.+)\n(?:Registrant Street:[ ]*(?P<street2>.+)\n)?(?:Registrant Street:[ ]*(?P<street3>.+)\n)?Registrant City:[ ]*(?P<city>.+)\nRegistrant State(?:\/Province)?:[ ]*(?P<state>.*)\nRegistrant Postal Code:[ ]*(?P<postalcode>.+)\nRegistrant Country:[ ]*(?P<country>.+)\n(?:Registrant Phone:[ ]*(?P<phone>.*)\n)?(?:Registrant Phone Ext:[ ]*(?P<phone_ext>.*)\n)?(?:Registrant Fax:[ ]*(?P<fax>.*)\n)?(?:Registrant Fax Ext:[ ]*(?P<fax_ext>.*)\n)?(?:Registrant Email:[ ]*(?P<email>.+)\n)?", # WildWestDomains, GoDaddy, Namecheap/eNom, Ascio, Musedoma (.museum), EuroDNS, nic.ps - "Registrant\n(?: (?P<organization>.+)\n)? (?P<name>.+)\n Email:(?P<email>.+)\n (?P<street1>.+)\n(?: (?P<street2>.+)\n)? (?P<postalcode>.+) (?P<city>.+)\n (?P<country>.+)\n Tel: (?P<phone>.+)\n\n", # internet.bs - " Registrant Contact Details:[ ]*\n (?P<organization>.*)\n (?P<name>.*)[ ]{2,}\((?P<email>.*)\)\n (?P<street1>.*)\n(?: (?P<street2>.*)\n)?(?: (?P<street3>.*)\n)? (?P<city>.*)\n (?P<state>.*),(?P<postalcode>.*)\n (?P<country>.*)\n Tel. (?P<phone>.*)", # Whois.com - "owner-id:[ ]*(?P<handle>.*)\n(?:owner-organization:[ ]*(?P<organization>.*)\n)?owner-name:[ ]*(?P<name>.*)\nowner-street:[ ]*(?P<street>.*)\nowner-city:[ ]*(?P<city>.*)\nowner-zip:[ ]*(?P<postalcode>.*)\nowner-country:[ ]*(?P<country>.*)\n(?:owner-phone:[ ]*(?P<phone>.*)\n)?(?:owner-fax:[ ]*(?P<fax>.*)\n)?owner-email:[ ]*(?P<email>.*)", # InterNetworX - "Registrant:\n registrant_org: (?P<organization>.*)\n registrant_name: (?P<name>.*)\n registrant_email: (?P<email>.*)\n registrant_address: (?P<address>.*)\n registrant_city: (?P<city>.*)\n registrant_state: (?P<state>.*)\n registrant_zip: (?P<postalcode>.*)\n registrant_country: (?P<country>.*)\n registrant_phone: (?P<phone>.*)", # Bellnames - "Holder of domain name:\n(?P<name>[\S\s]+)\n(?P<street>.+)\n(?P<postalcode>[A-Z0-9-]+)\s+(?P<city>.+)\n(?P<country>.+)\nContractual Language", # nic.ch - "\n\n(?:Owner)?\s+: (?P<name>.*)\n(?:\s+: (?P<organization>.*)\n)?\s+: (?P<street>.*)\n\s+: (?P<city>.*)\n\s+: (?P<state>.*)\n\s+: (?P<country>.*)\n", # nic.io - "Contact Information:\n\[Name\]\s*(?P<name>.*)\n\[Email\]\s*(?P<email>.*)\n\[Web Page\]\s*(?P<url>.*)\n\[Postal code\]\s*(?P<postalcode>.*)\n\[Postal Address\]\s*(?P<street1>.*)\n(?:\s+(?P<street2>.*)\n)?(?:\s+(?P<street3>.*)\n)?\[Phone\]\s*(?P<phone>.*)\n\[Fax\]\s*(?P<fax>.*)\n", # jprs.jp - "Registrant ID:(?P<handle>.*)\nRegistrant Name:(?P<name>.*)\n(?:Registrant Organization:(?P<organization>.*)\n)?Registrant Address1:(?P<street1>.*)\n(?:Registrant Address2:(?P<street2>.*)\n)?(?:Registrant Address3:(?P<street3>.*)\n)?Registrant City:(?P<city>.*)\n(?:Registrant State/Province:(?P<state>.*)\n)?Registrant Postal Code:(?P<postalcode>.*)\nRegistrant Country:(?P<country>.*)\nRegistrant Country Code:.*\nRegistrant Phone Number:(?P<phone>.*)\n(?:Registrant Facsimile Number:(?P<facsimile>.*)\n)?Registrant Email:(?P<email>.*)", # .US, .biz (NeuStar) - " Organisation Name[.]* (?P<name>.*)\n Organisation Address[.]* (?P<street1>.*)\n Organisation Address[.]* (?P<street2>.*)\n(?: Organisation Address[.]* (?P<street3>.*)\n)? Organisation Address[.]* (?P<city>.*)\n Organisation Address[.]* (?P<postalcode>.*)\n Organisation Address[.]* (?P<state>.*)\n Organisation Address[.]* (?P<country>.*)", # Melbourne IT (what a horrid format...) - "Registrant:[ ]*(?P<name>.+)\n[\s\S]*Eligibility Name:[ ]*(?P<organization>.+)\n[\s\S]*Registrant Contact ID:[ ]*(?P<handle>.+)\n", # .au business - "Eligibility Type:[ ]*Citizen\/Resident\n[\s\S]*Registrant Contact ID:[ ]*(?P<handle>.+)\n[\s\S]*Registrant Contact Name:[ ]*(?P<name>.+)\n", # .au individual - "Registrant:[ ]*(?P<organization>.+)\n[\s\S]*Eligibility Type:[ ]*(Higher Education Institution|Company|Incorporated Association|Other)\n[\s\S]*Registrant Contact ID:[ ]*(?P<handle>.+)\n[\s\S]*Registrant Contact Name:[ ]*(?P<name>.+)\n", # .au educational, company, 'incorporated association' (non-profit?), other (spotted for linux.conf.au, unsure if also for others) - " Registrant:\n (?P<name>.+)\n\n Registrant type:\n .*\n\n Registrant's address:\n The registrant .* opted to have", # Nominet (.uk) with hidden address - " Registrant:\n (?P<name>.+)\n\n[\s\S]* Registrant type:\n .*\n\n Registrant's address:\n (?P<street1>.+)\n(?: (?P<street2>.+)\n(?: (?P<street3>.+)\n)??)?? (?P<city>[^0-9\n]+)\n(?: (?P<state>.+)\n)? (?P<postalcode>.+)\n (?P<country>.+)\n\n", # Nominet (.uk) with visible address - "Domain Owner:\n\t(?P<organization>.+)\n\n[\s\S]*?(?:Registrant Contact:\n\t(?P<name>.+))?\n\nRegistrant(?:'s)? (?:a|A)ddress:(?:\n\t(?P<street1>.+)\n(?:\t(?P<street2>.+)\n)?(?:\t(?P<street3>.+)\n)?\t(?P<city>.+)\n\t(?P<postalcode>.+))?\n\t(?P<country>.+)(?:\n\t(?P<phone>.+) \(Phone\)\n\t(?P<fax>.+) \(FAX\)\n\t(?P<email>.+))?\n\n", # .ac.uk - what a mess... - "Registrant ID: (?P<handle>.+)\nRegistrant: (?P<name>.+)\nRegistrant Contact Email: (?P<email>.+)", # .cn (CNNIC) - "Registrant contact:\n (?P<name>.+)\n (?P<street>.*)\n (?P<city>.+), (?P<state>.+) (?P<postalcode>.+) (?P<country>.+)\n\n", # Fabulous.com - "registrant-name:\s*(?P<name>.+)\nregistrant-type:\s*(?P<type>.+)\nregistrant-address:\s*(?P<street>.+)\nregistrant-postcode:\s*(?P<postalcode>.+)\nregistrant-city:\s*(?P<city>.+)\nregistrant-country:\s*(?P<country>.+)\n(?:registrant-phone:\s*(?P<phone>.+)\n)?(?:registrant-email:\s*(?P<email>.+)\n)?", # Hetzner - "Registrant Contact Information :[ ]*\n[ ]+(?P<firstname>.*)\n[ ]+(?P<lastname>.*)\n[ ]+(?P<organization>.*)\n[ ]+(?P<email>.*)\n[ ]+(?P<street>.*)\n[ ]+(?P<city>.*)\n[ ]+(?P<postalcode>.*)\n[ ]+(?P<phone>.*)\n[ ]+(?P<fax>.*)\n\n", # GAL Communication - "Contact Information : For Customer # [0-9]+[ ]*\n[ ]+(?P<firstname>.*)\n[ ]+(?P<lastname>.*)\n[ ]+(?P<organization>.*)\n[ ]+(?P<email>.*)\n[ ]+(?P<street>.*)\n[ ]+(?P<city>.*)\n[ ]+(?P<postalcode>.*)\n[ ]+(?P<phone>.*)\n[ ]+(?P<fax>.*)\n\n", # GAL Communication alternative (private WHOIS) format? - " Registrant:\n (?P<name>.+)\n (?P<street>.+)\n (?P<city>.+) (?P<state>\S+),[ ]+(?P<postalcode>.+)\n (?P<country>.+)", # .am - "owner:\s+(?P<name>.+)", # .br - "person:\s+(?P<name>.+)", # nic.ru (person) - "org:\s+(?P<organization>.+)", # nic.ru (organization) - ] - - tech_contact_regexes = [ - " Technical Contact:[ ]*\n (?P<organization>.*)\n (?P<name>.*)\n (?P<street>.*)\n (?P<city>.*), (?P<state>.*) (?P<postalcode>.*)\n (?P<country>.*)\n(?: Phone: (?P<phone>.*)\n)? Email: (?P<email>.*)\n", # Corporate Domains, Inc. - "Technical Contact:\n (?P<name>.+)\n (?P<street1>.+)\n(?: (?P<street2>.*)\n)?(?: (?P<street3>.*)\n)? (?P<postalcode>.+), (?P<city>.+)\n (?P<country>.+)\n (?P<phone>.+)\n (?P<email>.+)\n\n", # OVH - "Tech ID:(?P<handle>.+)\nTech Name:(?P<name>.*)\n(:?Tech Organization:(?P<organization>.*)\n)?Tech Street1?:(?P<street1>.*)\n(?:Tech Street2:(?P<street2>.*)\n)?(?:Tech Street3:(?P<street3>.*)\n)?Tech City:(?P<city>.*)\nTech State/Province:(?P<state>.*)\nTech Postal Code:(?P<postalcode>.*)\nTech Country:(?P<country>.*)\nTech Phone:(?P<phone>.*)\n(?:Tech Phone Ext.:(?P<phone_ext>.*)\n)?(?:Tech FAX:(?P<fax>.*)\n)?(?:Tech FAX Ext.:(?P<fax_ext>.*)\n)?Tech Email:(?P<email>.*)", # Public Interest Registry (.org), nic.pw - "Tech(?:nical)? ID:(?P<handle>.+)\nTech(?:nical)? Name:(?P<name>.*)\n(?:Tech(?:nical)? Organization:(?P<organization>.*)\n)?Tech(?:nical)? Address1?:(?P<street1>.*)\n(?:Tech(?:nical)? Address2:(?P<street2>.*)\n)?(?:Tech(?:nical)? Address3:(?P<street3>.*)\n)?Tech(?:nical)? City:(?P<city>.*)\nTech(?:nical)? State/Province:(?P<state>.*)\nTech(?:nical)? Country/Economy:(?P<country>.*)\nTech(?:nical)? Postal Code:(?P<postalcode>.*)\nTech(?:nical)? Phone:(?P<phone>.*)\n(?:Tech(?:nical)? Phone Ext.:(?P<phone_ext>.*)\n)?(?:Tech(?:nical)? FAX:(?P<fax>.*)\n)?(?:Tech(?:nical)? FAX Ext.:(?P<fax_ext>.*)\n)?Tech(?:nical)? E-mail:(?P<email>.*)", # .ME, DotAsia - "Technical Contact ID:\s*(?P<handle>.+)\nTechnical Contact Name:\s*(?P<name>.+)\nTechnical Contact Organization:\s*(?P<organization>.*)\nTechnical Contact Address1:\s*(?P<street1>.+)\nTechnical Contact Address2:\s*(?P<street2>.*)\nTechnical Contact City:\s*(?P<city>.+)\nTechnical Contact State/Province:\s*(?P<state>.+)\nTechnical Contact Postal Code:\s*(?P<postalcode>.+)\nTechnical Contact Country:\s*(?P<country>.+)\nTechnical Contact Country Code:\s*(?P<country_code>.+)\nTechnical Contact Phone Number:\s*(?P<phone>.+)\nTechnical Contact Email:\s*(?P<email>.+)\n", # .CO Internet - "Tech Contact: (?P<handle>.+)\nTech Organization: (?P<organization>.+)\nTech Name: (?P<name>.+)\nTech Street: (?P<street>.+)\nTech City: (?P<city>.+)\nTech Postal Code: (?P<postalcode>.+)\nTech State: (?P<state>.+)\nTech Country: (?P<country>.+)\nTech Phone: (?P<phone>.*)\nTech Phone Ext: (?P<phone_ext>.*)\nTech Fax: (?P<fax>.*)\nTech Fax Ext: (?P<fax_ext>.*)\nTech Email: (?P<email>.*)\n", # Key-Systems GmbH - "(?:Tech ID:[ ]*(?P<handle>.*)\n)?Tech[ ]*Name:[ ]*(?P<name>.*)\n(?:Tech[ ]*Organization:[ ]*(?P<organization>.*)\n)?Tech[ ]*Street:[ ]*(?P<street1>.+)\n(?:Tech[ ]*Street:[ ]*(?P<street2>.+)\n)?(?:Tech[ ]*Street:[ ]*(?P<street3>.+)\n)?Tech[ ]*City:[ ]*(?P<city>.+)\nTech[ ]*State(?:\/Province)?:[ ]*(?P<state>.*)\nTech[ ]*Postal[ ]*Code:[ ]*(?P<postalcode>.+)\nTech[ ]*Country:[ ]*(?P<country>.+)\n(?:Tech[ ]*Phone:[ ]*(?P<phone>.*)\n)?(?:Tech[ ]*Phone[ ]*Ext:[ ]*(?P<phone_ext>.*)\n)?(?:Tech[ ]*Fax:[ ]*(?P<fax>.*)\n)?(?:Tech[ ]*Fax[ ]*Ext:\s*?(?P<fax_ext>.*)\n)?(?:Tech[ ]*Email:[ ]*(?P<email>.+)\n)?", # WildWestDomains, GoDaddy, Namecheap/eNom, Ascio, Musedoma (.museum), EuroDNS, nic.ps - "Technical Contact\n(?: (?P<organization>.+)\n)? (?P<name>.+)\n Email:(?P<email>.+)\n (?P<street1>.+)\n(?: (?P<street2>.+)\n)? (?P<postalcode>.+) (?P<city>.+)\n (?P<country>.+)\n Tel: (?P<phone>.+)\n\n", # internet.bs - " Technical Contact Details:[ ]*\n (?P<organization>.*)\n (?P<name>.*)[ ]{2,}\((?P<email>.*)\)\n (?P<street1>.*)\n(?: (?P<street2>.*)\n)?(?: (?P<street3>.*)\n)? (?P<city>.*)\n (?P<state>.*),(?P<postalcode>.*)\n (?P<country>.*)\n Tel. (?P<phone>.*)", # Whois.com - "tech-id:[ ]*(?P<handle>.*)\n(?:tech-organization:[ ]*(?P<organization>.*)\n)?tech-name:[ ]*(?P<name>.*)\ntech-street:[ ]*(?P<street>.*)\ntech-city:[ ]*(?P<city>.*)\ntech-zip:[ ]*(?P<postalcode>.*)\ntech-country:[ ]*(?P<country>.*)\n(?:tech-phone:[ ]*(?P<phone>.*)\n)?(?:tech-fax:[ ]*(?P<fax>.*)\n)?tech-email:[ ]*(?P<email>.*)", # InterNetworX - "Technical Contact:\n tech_org: (?P<organization>.*)\n tech_name: (?P<name>.*)\n tech_email: (?P<email>.*)\n tech_address: (?P<address>.*)\n tech_city: (?P<city>.*)\n tech_state: (?P<state>.*)\n tech_zip: (?P<postalcode>.*)\n tech_country: (?P<country>.*)\n tech_phone: (?P<phone>.*)", # Bellnames - "Technical contact:\n(?P<name>[\S\s]+)\n(?P<street>.+)\n(?P<postalcode>[A-Z0-9-]+)\s+(?P<city>.+)\n(?P<country>.+)\n\n", # nic.ch - "Tech Contact ID:[ ]*(?P<handle>.+)\nTech Contact Name:[ ]*(?P<name>.+)", # .au - "Technical Contact ID:(?P<handle>.*)\nTechnical Contact Name:(?P<name>.*)\n(?:Technical Contact Organization:(?P<organization>.*)\n)?Technical Contact Address1:(?P<street1>.*)\n(?:Technical Contact Address2:(?P<street2>.*)\n)?(?:Technical Contact Address3:(?P<street3>.*)\n)?Technical Contact City:(?P<city>.*)\n(?:Technical Contact State/Province:(?P<state>.*)\n)?Technical Contact Postal Code:(?P<postalcode>.*)\nTechnical Contact Country:(?P<country>.*)\nTechnical Contact Country Code:.*\nTechnical Contact Phone Number:(?P<phone>.*)\n(?:Technical Contact Facsimile Number:(?P<facsimile>.*)\n)?Technical Contact Email:(?P<email>.*)", # .US, .biz (NeuStar) - "Tech Name[.]* (?P<name>.*)\n Tech Address[.]* (?P<street1>.*)\n Tech Address[.]* (?P<street2>.*)\n(?: Tech Address[.]* (?P<street3>.*)\n)? Tech Address[.]* (?P<city>.*)\n Tech Address[.]* (?P<postalcode>.*)\n Tech Address[.]* (?P<state>.*)\n Tech Address[.]* (?P<country>.*)\n Tech Email[.]* (?P<email>.*)\n Tech Phone[.]* (?P<phone>.*)\n Tech Fax[.]* (?P<fax>.*)", # Melbourne IT - "Technical contact:\n(?: (?P<organization>.+)\n)? (?P<name>.+)\n (?P<email>.+)\n (?P<street>.+)\n (?P<city>.+), (?P<state>.+) (?P<postalcode>.+) (?P<country>.+)\n Phone: (?P<phone>.*)\n Fax: (?P<fax>.*)\n", # Fabulous.com - "tech-c-name:\s*(?P<name>.+)\ntech-c-type:\s*(?P<type>.+)\ntech-c-address:\s*(?P<street>.+)\ntech-c-postcode:\s*(?P<postalcode>.+)\ntech-c-city:\s*(?P<city>.+)\ntech-c-country:\s*(?P<country>.+)\n(?:tech-c-phone:\s*(?P<phone>.+)\n)?(?:tech-c-email:\s*(?P<email>.+)\n)?", # Hetzner - "Admin Contact Information :[ ]*\n[ ]+(?P<firstname>.*)\n[ ]+(?P<lastname>.*)\n[ ]+(?P<organization>.*)\n[ ]+(?P<email>.*)\n[ ]+(?P<street>.*)\n[ ]+(?P<city>.*)\n[ ]+(?P<postalcode>.*)\n[ ]+(?P<phone>.*)\n[ ]+(?P<fax>.*)\n\n", # GAL Communication - " Technical contact:\n (?P<name>.+)\n (?P<organization>.*)\n (?P<street>.+)\n (?P<city>.+) (?P<state>\S+),[ ]+(?P<postalcode>.+)\n (?P<country>.+)\n (?P<email>.+)\n (?P<phone>.*)\n (?P<fax>.*)", # .am - "Technical:\n\s*Name:\s*(?P<name>.*)\n\s*Organisation:\s*(?P<organization>.*)\n\s*Language:.*\n\s*Phone:\s*(?P<phone>.*)\n\s*Fax:\s*(?P<fax>.*)\n\s*Email:\s*(?P<email>.*)\n", # EURid - "\[Zone-C\]\nType: (?P<type>.+)\nName: (?P<name>.+)\n(Organisation: (?P<organization>.+)\n){0,1}(Address: (?P<street1>.+)\n){1}(Address: (?P<street2>.+)\n){0,1}(Address: (?P<street3>.+)\n){0,1}(Address: (?P<street4>.+)\n){0,1}PostalCode: (?P<postalcode>.+)\nCity: (?P<city>.+)\nCountryCode: (?P<country>[A-Za-z]{2})\nPhone: (?P<phone>.+)\nFax: (?P<fax>.+)\nEmail: (?P<email>.+)\n(Remarks: (?P<remark>.+)\n){0,1}Changed: (?P<changed>.+)", # DeNIC - ] - - admin_contact_regexes = [ - " Administrative Contact:[ ]*\n (?P<organization>.*)\n (?P<name>.*)\n (?P<street>.*)\n (?P<city>.*), (?P<state>.*) (?P<postalcode>.*)\n (?P<country>.*)\n(?: Phone: (?P<phone>.*)\n)? Email: (?P<email>.*)\n", # Corporate Domains, Inc. - "Administrative Contact:\n (?P<name>.+)\n (?P<street1>.+)\n(?: (?P<street2>.*)\n)?(?: (?P<street3>.*)\n)? (?P<postalcode>.+), (?P<city>.+)\n (?P<country>.+)\n (?P<phone>.+)\n (?P<email>.+)\n\n", # OVH - "Admin ID:(?P<handle>.+)\nAdmin Name:(?P<name>.*)\n(?:Admin Organization:(?P<organization>.*)\n)?Admin Street1?:(?P<street1>.*)\n(?:Admin Street2:(?P<street2>.*)\n)?(?:Admin Street3:(?P<street3>.*)\n)?Admin City:(?P<city>.*)\nAdmin State/Province:(?P<state>.*)\nAdmin Postal Code:(?P<postalcode>.*)\nAdmin Country:(?P<country>.*)\nAdmin Phone:(?P<phone>.*)\n(?:Admin Phone Ext.:(?P<phone_ext>.*)\n)?(?:Admin FAX:(?P<fax>.*)\n)?(?:Admin FAX Ext.:(?P<fax_ext>.*)\n)?Admin Email:(?P<email>.*)", # Public Interest Registry (.org), nic.pw - "Admin(?:istrative)? ID:(?P<handle>.+)\nAdmin(?:istrative)? Name:(?P<name>.*)\n(?:Admin(?:istrative)? Organization:(?P<organization>.*)\n)?Admin(?:istrative)? Address1?:(?P<street1>.*)\n(?:Admin(?:istrative)? Address2:(?P<street2>.*)\n)?(?:Admin(?:istrative)? Address3:(?P<street3>.*)\n)?Admin(?:istrative)? City:(?P<city>.*)\nAdmin(?:istrative)? State/Province:(?P<state>.*)\nAdmin(?:istrative)? Country/Economy:(?P<country>.*)\nAdmin(?:istrative)? Postal Code:(?P<postalcode>.*)\nAdmin(?:istrative)? Phone:(?P<phone>.*)\n(?:Admin(?:istrative)? Phone Ext.:(?P<phone_ext>.*)\n)?(?:Admin(?:istrative)? FAX:(?P<fax>.*)\n)?(?:Admin(?:istrative)? FAX Ext.:(?P<fax_ext>.*)\n)?Admin(?:istrative)? E-mail:(?P<email>.*)", # .ME, DotAsia - "Administrative Contact ID:\s*(?P<handle>.+)\nAdministrative Contact Name:\s*(?P<name>.+)\nAdministrative Contact Organization:\s*(?P<organization>.*)\nAdministrative Contact Address1:\s*(?P<street1>.+)\nAdministrative Contact Address2:\s*(?P<street2>.*)\nAdministrative Contact City:\s*(?P<city>.+)\nAdministrative Contact State/Province:\s*(?P<state>.+)\nAdministrative Contact Postal Code:\s*(?P<postalcode>.+)\nAdministrative Contact Country:\s*(?P<country>.+)\nAdministrative Contact Country Code:\s*(?P<country_code>.+)\nAdministrative Contact Phone Number:\s*(?P<phone>.+)\nAdministrative Contact Email:\s*(?P<email>.+)\n", # .CO Internet - "Admin Contact: (?P<handle>.+)\nAdmin Organization: (?P<organization>.+)\nAdmin Name: (?P<name>.+)\nAdmin Street: (?P<street>.+)\nAdmin City: (?P<city>.+)\nAdmin State: (?P<state>.+)\nAdmin Postal Code: (?P<postalcode>.+)\nAdmin Country: (?P<country>.+)\nAdmin Phone: (?P<phone>.*)\nAdmin Phone Ext: (?P<phone_ext>.*)\nAdmin Fax: (?P<fax>.*)\nAdmin Fax Ext: (?P<fax_ext>.*)\nAdmin Email: (?P<email>.*)\n", # Key-Systems GmbH - "(?:Admin ID:[ ]*(?P<handle>.*)\n)?Admin[ ]*Name:[ ]*(?P<name>.*)\n(?:Admin[ ]*Organization:[ ]*(?P<organization>.*)\n)?Admin[ ]*Street:[ ]*(?P<street1>.+)\n(?:Admin[ ]*Street:[ ]*(?P<street2>.+)\n)?(?:Admin[ ]*Street:[ ]*(?P<street3>.+)\n)?Admin[ ]*City:[ ]*(?P<city>.+)\nAdmin[ ]*State(?:\/Province)?:[ ]*(?P<state>.*)\nAdmin[ ]*Postal[ ]*Code:[ ]*(?P<postalcode>.+)\nAdmin[ ]*Country:[ ]*(?P<country>.+)\n(?:Admin[ ]*Phone:[ ]*(?P<phone>.*)\n)?(?:Admin[ ]*Phone[ ]*Ext:[ ]*(?P<phone_ext>.*)\n)?(?:Admin[ ]*Fax:[ ]*(?P<fax>.*)\n)?(?:Admin[ ]*Fax[ ]*Ext:\s*?(?P<fax_ext>.*)\n)?(?:Admin[ ]*Email:[ ]*(?P<email>.+)\n)?", # WildWestDomains, GoDaddy, Namecheap/eNom, Ascio, Musedoma (.museum), EuroDNS, nic.ps - "Administrative Contact\n(?: (?P<organization>.+)\n)? (?P<name>.+)\n Email:(?P<email>.+)\n (?P<street1>.+)\n(?: (?P<street2>.+)\n)? (?P<postalcode>.+) (?P<city>.+)\n (?P<country>.+)\n Tel: (?P<phone>.+)\n\n", # internet.bs - " Administrative Contact Details:[ ]*\n (?P<organization>.*)\n (?P<name>.*)[ ]{2,}\((?P<email>.*)\)\n (?P<street1>.*)\n(?: (?P<street2>.*)\n)?(?: (?P<street3>.*)\n)? (?P<city>.*)\n (?P<state>.*),(?P<postalcode>.*)\n (?P<country>.*)\n Tel. (?P<phone>.*)", # Whois.com - "admin-id:[ ]*(?P<handle>.*)\n(?:admin-organization:[ ]*(?P<organization>.*)\n)?admin-name:[ ]*(?P<name>.*)\nadmin-street:[ ]*(?P<street>.*)\nadmin-city:[ ]*(?P<city>.*)\nadmin-zip:[ ]*(?P<postalcode>.*)\nadmin-country:[ ]*(?P<country>.*)\n(?:admin-phone:[ ]*(?P<phone>.*)\n)?(?:admin-fax:[ ]*(?P<fax>.*)\n)?admin-email:[ ]*(?P<email>.*)", # InterNetworX - "Administrative Contact:\n admin_org: (?P<organization>.*)\n admin_name: (?P<name>.*)\n admin_email: (?P<email>.*)\n admin_address: (?P<address>.*)\n admin_city: (?P<city>.*)\n admin_state: (?P<state>.*)\n admin_zip: (?P<postalcode>.*)\n admin_country: (?P<country>.*)\n admin_phone: (?P<phone>.*)", # Bellnames - "Administrative Contact ID:(?P<handle>.*)\nAdministrative Contact Name:(?P<name>.*)\n(?:Administrative Contact Organization:(?P<organization>.*)\n)?Administrative Contact Address1:(?P<street1>.*)\n(?:Administrative Contact Address2:(?P<street2>.*)\n)?(?:Administrative Contact Address3:(?P<street3>.*)\n)?Administrative Contact City:(?P<city>.*)\n(?:Administrative Contact State/Province:(?P<state>.*)\n)?Administrative Contact Postal Code:(?P<postalcode>.*)\nAdministrative Contact Country:(?P<country>.*)\nAdministrative Contact Country Code:.*\nAdministrative Contact Phone Number:(?P<phone>.*)\n(?:Administrative Contact Facsimile Number:(?P<facsimile>.*)\n)?Administrative Contact Email:(?P<email>.*)", # .US, .biz (NeuStar) - "Admin Name[.]* (?P<name>.*)\n Admin Address[.]* (?P<street1>.*)\n Admin Address[.]* (?P<street2>.*)\n(?: Admin Address[.]* (?P<street3>.*)\n)? Admin Address[.]* (?P<city>.*)\n Admin Address[.]* (?P<postalcode>.*)\n Admin Address[.]* (?P<state>.*)\n Admin Address[.]* (?P<country>.*)\n Admin Email[.]* (?P<email>.*)\n Admin Phone[.]* (?P<phone>.*)\n Admin Fax[.]* (?P<fax>.*)", # Melbourne IT - "Administrative contact:\n(?: (?P<organization>.+)\n)? (?P<name>.+)\n (?P<email>.+)\n (?P<street>.+)\n (?P<city>.+), (?P<state>.+) (?P<postalcode>.+) (?P<country>.+)\n Phone: (?P<phone>.*)\n Fax: (?P<fax>.*)\n", # Fabulous.com - "admin-c-name:\s*(?P<name>.+)\nadmin-c-type:\s*(?P<type>.+)\nadmin-c-address:\s*(?P<street>.+)\nadmin-c-postcode:\s*(?P<postalcode>.+)\nadmin-c-city:\s*(?P<city>.+)\nadmin-c-country:\s*(?P<country>.+)\n(?:admin-c-phone:\s*(?P<phone>.+)\n)?(?:admin-c-email:\s*(?P<email>.+)\n)?", # Hetzner - "Tech Contact Information :[ ]*\n[ ]+(?P<firstname>.*)\n[ ]+(?P<lastname>.*)\n[ ]+(?P<organization>.*)\n[ ]+(?P<email>.*)\n[ ]+(?P<street>.*)\n[ ]+(?P<city>.*)\n[ ]+(?P<postalcode>.*)\n[ ]+(?P<phone>.*)\n[ ]+(?P<fax>.*)\n\n", # GAL Communication - " Administrative contact:\n (?P<name>.+)\n (?P<organization>.*)\n (?P<street>.+)\n (?P<city>.+) (?P<state>\S+),[ ]+(?P<postalcode>.+)\n (?P<country>.+)\n (?P<email>.+)\n (?P<phone>.*)\n (?P<fax>.*)", # .am - "\[Tech-C\]\nType: (?P<type>.+)\nName: (?P<name>.+)\n(Organisation: (?P<organization>.+)\n){0,1}(Address: (?P<street1>.+)\n){1}(Address: (?P<street2>.+)\n){0,1}(Address: (?P<street3>.+)\n){0,1}(Address: (?P<street4>.+)\n){0,1}PostalCode: (?P<postalcode>.+)\nCity: (?P<city>.+)\nCountryCode: (?P<country>[A-Za-z]{2})\nPhone: (?P<phone>.+)\nFax: (?P<fax>.+)\nEmail: (?P<email>.+)\n(Remarks: (?P<remark>.+)\n){0,1}Changed: (?P<changed>.+)", # DeNIC - ] - - billing_contact_regexes = [ - "Billing ID:(?P<handle>.+)\nBilling Name:(?P<name>.*)\nBilling Organization:(?P<organization>.*)\nBilling Street1:(?P<street1>.*)\n(?:Billing Street2:(?P<street2>.*)\n)?(?:Billing Street3:(?P<street3>.*)\n)?Billing City:(?P<city>.*)\nBilling State/Province:(?P<state>.*)\nBilling Postal Code:(?P<postalcode>.*)\nBilling Country:(?P<country>.*)\nBilling Phone:(?P<phone>.*)\n(?:Billing Phone Ext.:(?P<phone_ext>.*)\n)?(?:Billing FAX:(?P<fax>.*)\n)?(?:Billing FAX Ext.:(?P<fax_ext>.*)\n)?Billing Email:(?P<email>.*)", # nic.pw - "Billing ID:(?P<handle>.+)\nBilling Name:(?P<name>.*)\n(?:Billing Organization:(?P<organization>.*)\n)?Billing Address1?:(?P<street1>.*)\n(?:Billing Address2:(?P<street2>.*)\n)?(?:Billing Address3:(?P<street3>.*)\n)?Billing City:(?P<city>.*)\nBilling State/Province:(?P<state>.*)\nBilling Country/Economy:(?P<country>.*)\nBilling Postal Code:(?P<postalcode>.*)\nBilling Phone:(?P<phone>.*)\n(?:Billing Phone Ext.:(?P<phone_ext>.*)\n)?(?:Billing FAX:(?P<fax>.*)\n)?(?:Billing FAX Ext.:(?P<fax_ext>.*)\n)?Billing E-mail:(?P<email>.*)", # DotAsia - "Billing Contact ID:\s*(?P<handle>.+)\nBilling Contact Name:\s*(?P<name>.+)\nBilling Contact Organization:\s*(?P<organization>.*)\nBilling Contact Address1:\s*(?P<street1>.+)\nBilling Contact Address2:\s*(?P<street2>.*)\nBilling Contact City:\s*(?P<city>.+)\nBilling Contact State/Province:\s*(?P<state>.+)\nBilling Contact Postal Code:\s*(?P<postalcode>.+)\nBilling Contact Country:\s*(?P<country>.+)\nBilling Contact Country Code:\s*(?P<country_code>.+)\nBilling Contact Phone Number:\s*(?P<phone>.+)\nBilling Contact Email:\s*(?P<email>.+)\n", # .CO Internet - "Billing Contact: (?P<handle>.+)\nBilling Organization: (?P<organization>.+)\nBilling Name: (?P<name>.+)\nBilling Street: (?P<street>.+)\nBilling City: (?P<city>.+)\nBilling Postal Code: (?P<postalcode>.+)\nBilling State: (?P<state>.+)\nBilling Country: (?P<country>.+)\nBilling Phone: (?P<phone>.*)\nBilling Phone Ext: (?P<phone_ext>.*)\nBilling Fax: (?P<fax>.*)\nBilling Fax Ext: (?P<fax_ext>.*)\nBilling Email: (?P<email>.*)\n", # Key-Systems GmbH - "(?:Billing ID:[ ]*(?P<handle>.*)\n)?Billing[ ]*Name:[ ]*(?P<name>.*)\n(?:Billing[ ]*Organization:[ ]*(?P<organization>.*)\n)?Billing[ ]*Street:[ ]*(?P<street1>.+)\n(?:Billing[ ]*Street:[ ]*(?P<street2>.+)\n)?Billing[ ]*City:[ ]*(?P<city>.+)\nBilling[ ]*State\/Province:[ ]*(?P<state>.+)\nBilling[ ]*Postal[ ]*Code:[ ]*(?P<postalcode>.+)\nBilling[ ]*Country:[ ]*(?P<country>.+)\n(?:Billing[ ]*Phone:[ ]*(?P<phone>.*)\n)?(?:Billing[ ]*Phone[ ]*Ext:[ ]*(?P<phone_ext>.*)\n)?(?:Billing[ ]*Fax:[ ]*(?P<fax>.*)\n)?(?:Billing[ ]*Fax[ ]*Ext:\s*?(?P<fax_ext>.*)\n)?(?:Billing[ ]*Email:[ ]*(?P<email>.+)\n)?", # Musedoma (.museum) - "Billing Contact:\n (?P<name>.+)\n (?P<street1>.+)\n(?: (?P<street2>.*)\n)?(?: (?P<street3>.*)\n)? (?P<postalcode>.+), (?P<city>.+)\n (?P<country>.+)\n (?P<phone>.+)\n (?P<email>.+)\n\n", # OVH - " Billing Contact Details:[ ]*\n (?P<organization>.*)\n (?P<name>.*)[ ]{2,}\((?P<email>.*)\)\n (?P<street1>.*)\n(?: (?P<street2>.*)\n)?(?: (?P<street3>.*)\n)? (?P<city>.*)\n (?P<state>.*),(?P<postalcode>.*)\n (?P<country>.*)\n Tel. (?P<phone>.*)", # Whois.com - "billing-id:[ ]*(?P<handle>.*)\n(?:billing-organization:[ ]*(?P<organization>.*)\n)?billing-name:[ ]*(?P<name>.*)\nbilling-street:[ ]*(?P<street>.*)\nbilling-city:[ ]*(?P<city>.*)\nbilling-zip:[ ]*(?P<postalcode>.*)\nbilling-country:[ ]*(?P<country>.*)\n(?:billing-phone:[ ]*(?P<phone>.*)\n)?(?:billing-fax:[ ]*(?P<fax>.*)\n)?billing-email:[ ]*(?P<email>.*)", # InterNetworX - "Billing Contact:\n bill_org: (?P<organization>.*)\n bill_name: (?P<name>.*)\n bill_email: (?P<email>.*)\n bill_address: (?P<address>.*)\n bill_city: (?P<city>.*)\n bill_state: (?P<state>.*)\n bill_zip: (?P<postalcode>.*)\n bill_country: (?P<country>.*)\n bill_phone: (?P<phone>.*)", # Bellnames - "Billing Contact ID:(?P<handle>.*)\nBilling Contact Name:(?P<name>.*)\n(?:Billing Contact Organization:(?P<organization>.*)\n)?Billing Contact Address1:(?P<street1>.*)\n(?:Billing Contact Address2:(?P<street2>.*)\n)?(?:Billing Contact Address3:(?P<street3>.*)\n)?Billing Contact City:(?P<city>.*)\n(?:Billing Contact State/Province:(?P<state>.*)\n)?Billing Contact Postal Code:(?P<postalcode>.*)\nBilling Contact Country:(?P<country>.*)\nBilling Contact Country Code:.*\nBilling Contact Phone Number:(?P<phone>.*)\n(?:Billing Contact Facsimile Number:(?P<facsimile>.*)\n)?Billing Contact Email:(?P<email>.*)", # .US, .biz (NeuStar) - "Billing contact:\n(?: (?P<organization>.+)\n)? (?P<name>.+)\n (?P<email>.+)\n (?P<street>.+)\n (?P<city>.+), (?P<state>.+) (?P<postalcode>.+) (?P<country>.+)\n Phone: (?P<phone>.*)\n Fax: (?P<fax>.*)\n", # Fabulous.com - "Billing Contact Information :[ ]*\n[ ]+(?P<firstname>.*)\n[ ]+(?P<lastname>.*)\n[ ]+(?P<organization>.*)\n[ ]+(?P<email>.*)\n[ ]+(?P<street>.*)\n[ ]+(?P<city>.*)\n[ ]+(?P<postalcode>.*)\n[ ]+(?P<phone>.*)\n[ ]+(?P<fax>.*)\n\n", # GAL Communication - ] - - # Some registries use NIC handle references instead of directly listing contacts... - - nic_contact_regexes = [ - "personname:\s*(?P<name>.+)\norganization:\s*(?P<organization>.+)\nstreet address:\s*(?P<street>.+)\npostal code:\s*(?P<postalcode>.+)\ncity:\s*(?P<city>.+)\ncountry:\s*(?P<country>.+)\n(?:phone:\s*(?P<phone>.+)\n)?(?:fax-no:\s*(?P<fax>.+)\n)?(?:e-mail:\s*(?P<email>.+)\n)?nic-hdl:\s*(?P<handle>.+)\nchanged:\s*(?P<changedate>.+)", # nic.at - "contact-handle:[ ]*(?P<handle>.+)\ncontact:[ ]*(?P<name>.+)\n(?:organisation:[ ]*(?P<organization>.+)\n)?address:[ ]*(?P<street1>.+)\n(?:address:[ ]*(?P<street2>.+)\n)?(?:address:[ ]*(?P<street3>.+)\n)?(?:address:[ ]*(?P<street4>.+)\n)?address:[ ]*(?P<city>.+)\naddress:[ ]*(?P<state>.+)\naddress:[ ]*(?P<postalcode>.+)\naddress:[ ]*(?P<country>.+)\n(?:phone:[ ]*(?P<phone>.+)\n)?(?:fax:[ ]*(?P<fax>.+)\n)?(?:email:[ ]*(?P<email>.+)\n)?", # LCN.com - "person:\s*(?P<name>.+)\nnic-hdl:\s*(?P<handle>.+)\n", # .ie - "nic-hdl:\s*(?P<handle>.+)\ntype:\s*(?P<type>.+)\ncontact:\s*(?P<name>.+)\n(?:.+\n)*?(?:address:\s*(?P<street1>.+)\naddress:\s*(?P<street2>.+)\naddress:\s*(?P<street3>.+)\naddress:\s*(?P<country>.+)\n)?(?:phone:\s*(?P<phone>.+)\n)?(?:fax-no:\s*(?P<fax>.+)\n)?(?:.+\n)*?(?:e-mail:\s*(?P<email>.+)\n)?(?:.+\n)*?changed:\s*(?P<changedate>[0-9]{2}\/[0-9]{2}\/[0-9]{4}).*\n", # AFNIC madness without country field - "nic-hdl:\s*(?P<handle>.+)\ntype:\s*(?P<type>.+)\ncontact:\s*(?P<name>.+)\n(?:.+\n)*?(?:address:\s*(?P<street1>.+)\n)?(?:address:\s*(?P<street2>.+)\n)?(?:address:\s*(?P<street3>.+)\n)?(?:phone:\s*(?P<phone>.+)\n)?(?:fax-no:\s*(?P<fax>.+)\n)?(?:.+\n)*?(?:e-mail:\s*(?P<email>.+)\n)?(?:.+\n)*?changed:\s*(?P<changedate>[0-9]{2}\/[0-9]{2}\/[0-9]{4}).*\n", # AFNIC madness any country -at all- - "nic-hdl:\s*(?P<handle>.+)\ntype:\s*(?P<type>.+)\ncontact:\s*(?P<name>.+)\n(?:.+\n)*?(?:address:\s*(?P<street1>.+)\n)?(?:address:\s*(?P<street2>.+)\n)?(?:address:\s*(?P<street3>.+)\n)?(?:address:\s*(?P<street4>.+)\n)?country:\s*(?P<country>.+)\n(?:phone:\s*(?P<phone>.+)\n)?(?:fax-no:\s*(?P<fax>.+)\n)?(?:.+\n)*?(?:e-mail:\s*(?P<email>.+)\n)?(?:.+\n)*?changed:\s*(?P<changedate>[0-9]{2}\/[0-9]{2}\/[0-9]{4}).*\n", # AFNIC madness with country field - - ] - - nic_contact_references = { - "registrant": [ - "registrant:\s*(?P<handle>.+)", # nic.at - "owner-contact:\s*(?P<handle>.+)", # LCN.com - "holder-c:\s*(?P<handle>.+)", # AFNIC - "holder:\s*(?P<handle>.+)", # iis.se (they apparently want to be difficult, and won't give you contact info for the handle over their WHOIS service) - ], - "tech": [ - "tech-c:\s*(?P<handle>.+)", # nic.at, AFNIC, iis.se - "technical-contact:\s*(?P<handle>.+)", # LCN.com - ], - "admin": [ - "admin-c:\s*(?P<handle>.+)", # nic.at, AFNIC, iis.se - "admin-contact:\s*(?P<handle>.+)", # LCN.com - ], - "billing": [ - "billing-c:\s*(?P<handle>.+)", # iis.se - "billing-contact:\s*(?P<handle>.+)", # LCN.com - ] - } - - # Why do the below? The below is meant to handle with an edge case (issue #2) where a partial match followed - # by a failure, for a regex containing the \s*.+ pattern, would send the regex module on a wild goose hunt for - # matching positions. The workaround is to use \S.* instead of .+, but in the interest of keeping the regexes - # consistent and compact, it's more practical to do this (predictable) conversion on runtime. - # FIXME: This breaks on NIC contact regex for nic.at. Why? - registrant_regexes = [preprocess_regex(regex) for regex in registrant_regexes] - tech_contact_regexes = [preprocess_regex(regex) for regex in tech_contact_regexes] - admin_contact_regexes = [preprocess_regex(regex) for regex in admin_contact_regexes] - billing_contact_regexes = [preprocess_regex(regex) for regex in billing_contact_regexes] - for segment in data: for regex in registrant_regexes: match = re.search(regex, segment) @@ -670,14 +738,10 @@ def parse_registrants(data): break # Find NIC handle contact definitions - handle_contacts = [] - for regex in nic_contact_regexes: - for segment in data: - matches = re.finditer(regex, segment) - for match in matches: - handle_contacts.append(match.groupdict()) + handle_contacts = parse_nic_contact(data) # Find NIC handle references and process them + missing_handle_contacts = [] for category in nic_contact_references: for regex in nic_contact_references[category]: for segment in data: @@ -687,9 +751,23 @@ def parse_registrants(data): if data_reference["handle"] == "-" or re.match("https?:\/\/", data_reference["handle"]) is not None: pass # Reference was either blank or a URL; the latter is to deal with false positives for nic.ru else: + found = False for contact in handle_contacts: if contact["handle"] == data_reference["handle"]: + found = True data_reference.update(contact) + if found == False: + # The contact definition was not found in the supplied raw WHOIS data. If the + # method has been called with never_query_handles=False, we can use the supplied + # WHOIS server for looking up the handle information separately. + if never_query_handles == False: + try: + contact = fetch_nic_contact(data_reference["handle"], handle_server) + data_reference.update(contact) + except shared.WhoisException as e: + pass # No data found. TODO: Log error? + else: + pass # TODO: Log warning? if category == "registrant": registrant = data_reference elif category == "tech": @@ -699,7 +777,7 @@ def parse_registrants(data): elif category == "admin": admin_contact = data_reference break - + # Post-processing for obj in (registrant, tech_contact, billing_contact, admin_contact): if obj is not None: @@ -723,16 +801,31 @@ def parse_registrants(data): break i += 1 obj["street"] = "\n".join(street_items) + if "organization1" in obj: # This is to deal with eg. HKDNR, who allow organization names in multiple languages. + organization_items = [] + i = 1 + while True: + try: + if obj["organization%d" % i].strip() != "": + organization_items.append(obj["organization%d" % i]) + del obj["organization%d" % i] + except KeyError as e: + break + i += 1 + obj["organization"] = "\n".join(organization_items) if 'changedate' in obj: obj['changedate'] = parse_dates([obj['changedate']])[0] + if 'creationdate' in obj: + obj['creationdate'] = parse_dates([obj['creationdate']])[0] if 'street' in obj and "\n" in obj["street"] and 'postalcode' not in obj: # Deal with certain mad WHOIS servers that don't properly delimit address data... (yes, AFNIC, looking at you) lines = [x.strip() for x in obj["street"].splitlines()] if " " in lines[-1]: postal_code, city = lines[-1].split(" ", 1) - obj["postalcode"] = postal_code - obj["city"] = city - obj["street"] = "\n".join(lines[:-1]) + if "." not in lines[-1] and re.match("[0-9]", postal_code) and len(postal_code) >= 3: + obj["postalcode"] = postal_code + obj["city"] = city + obj["street"] = "\n".join(lines[:-1]) if 'firstname' in obj or 'lastname' in obj: elements = [] if 'firstname' in obj: @@ -740,6 +833,13 @@ def parse_registrants(data): 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, @@ -747,3 +847,23 @@ def parse_registrants(data): "admin": admin_contact, "billing": billing_contact, } + +def fetch_nic_contact(handle, lookup_server): + response = net.get_whois_raw(handle, lookup_server) + response = [segment.replace("\r", "") for segment in response] # Carriage returns are the devil + results = parse_nic_contact(response) + + if len(results) > 0: + return results[0] + else: + raise shared.WhoisException("No contact data found in the response.") + +def parse_nic_contact(data): + handle_contacts = [] + for regex in nic_contact_regexes: + for segment in data: + matches = re.finditer(regex, segment) + for match in matches: + handle_contacts.append(match.groupdict()) + + return handle_contacts \ No newline at end of file diff --git a/setup.py b/setup.py index a252bd0..17eb8fa 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup setup(name='pythonwhois', - version='2.2.2', + version='2.3.0', description='Module for retrieving and parsing the WHOIS data for a domain. Supports most domains. No dependencies.', author='Sven Slootweg', author_email='pythonwhois@cryto.net', diff --git a/test.py b/test.py index 40dbc57..4117c69 100755 --- a/test.py +++ b/test.py @@ -4,6 +4,9 @@ import sys, argparse, os, pythonwhois, json, datetime, codecs import pkgutil import encodings +# FIXME: The testing script is currently incapable of testing referenced NIC handles that are +# retrieved separately, such as is the case with the JPRS registry for .co.jp. This +# really needs to be fixed, to ensure that contact parsing for this doesn't break. def get_codecs(): """Dynamically get list of codecs in python.""" diff --git a/test/data/asiahotel.co.th b/test/data/asiahotel.co.th new file mode 100644 index 0000000..f3317a1 --- /dev/null +++ b/test/data/asiahotel.co.th @@ -0,0 +1,30 @@ + +Whois Server Version 2.1.2 + +Domain: ASIAHOTEL.CO.TH +Registrar: T.H.NIC Co., Ltd. +Name Server: NS1.ASIAHOTEL.CO.TH +Name Server: NS2.ASIAHOTEL.CO.TH +Status: ACTIVE +Updated date: 25 Dec 2013 +Created date: 17 Jan 1999 +Renew date: 17 Jan 2014 +Exp date: 16 Jan 2017 +Domain Holder: Asia Hotel Public Co., Ltd. ( บริษัท เอเชียโฮเต็ล จำกัด (มหาชน) ) +296 Phayathai Road Ratchathewi, Bangkok +10400 +TH + +Tech Contact: 85476 +Asia Hotel Public Co.,Ltd. +296 Phayathai Road Ratchathewi, Bangkok +10400 +TH + + + +>>> Last update of whois data: Fri, 27 Jun 2014 14:54:30 UTC+7 <<< + +For more information please visit: https://www.thnic.co.th/whois + + diff --git a/test/data/bts.co.th b/test/data/bts.co.th new file mode 100644 index 0000000..145de45 --- /dev/null +++ b/test/data/bts.co.th @@ -0,0 +1,30 @@ + +Whois Server Version 2.1.2 + +Domain: BTS.CO.TH +Registrar: T.H.NIC Co., Ltd. +Name Server: NS.LOXINFO.CO.TH +Name Server: NS.TNET.CO.TH +Status: ACTIVE +Updated date: 18 Jul 2009 +Created date: 4 Aug 1999 +Renew date: 4 Aug 1999 +Exp date: 3 Aug 2021 +Domain Holder: Bangkok Mass Transit System Public Company Limited (บริษัท ระบบขนส่งมวลชนกรุงเทพ จำกัด (มหาชน)) +BTS Building, Phaholyothin Rd.,Lardpao, Chatujak, Bangkok +10900 +TH + +Tech Contact: 74252 +Loxley Information Services Co., Ltd. +304 Suapha Rd., Pomprab, Pomprab Suttruphai, Bangkok +10110 +TH + + + +>>> Last update of whois data: Fri, 27 Jun 2014 16:32:41 UTC+7 <<< + +For more information please visit: https://www.thnic.co.th/whois + + 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/expopack.com.mx b/test/data/expopack.com.mx new file mode 100644 index 0000000..468c263 --- /dev/null +++ b/test/data/expopack.com.mx @@ -0,0 +1,91 @@ + +Domain Name: expopack.com.mx + +Created On: 1999-10-07 +Expiration Date: 2015-10-06 +Last Updated On: 2011-04-09 +Registrar: Akky (Una division de NIC Mexico) +URL: http://www.akky.mx +Whois TCP URI: whois.akky.mx +Whois Web URL: http://www.akky.mx/jsf/whois/whois.jsf + +Registrant: + Name: EXPO PAK S.A. DE C.V. + City: Mexico + State: Distrito Federal + Country: Mexico + +Administrative Contact: + Name: Alejandra Aguirre + City: Ciudad de Mexico + State: Distrito Federal + Country: Mexico + +Technical Contact: + Name: Alejandra Aguirre + City: Ciudad de Mexico + State: Distrito Federal + Country: Mexico + +Billing Contact: + Name: Alejandra Aguirre + City: Ciudad de Mexico + State: Distrito Federal + Country: Mexico + +Name Servers: + DNS: ns1.nuestrosite.com + DNS: ns2.nuestrosite.com + + +% NOTICE: The expiration date displayed in this record is the date the +% registrar's sponsorship of the domain name registration in the registry is +% currently set to expire. This date does not necessarily reflect the +% expiration date of the domain name registrant's agreement with the sponsoring +% registrar. Users may consult the sponsoring registrar's Whois database to +% view the registrar's reported date of expiration for this registration. + +% The requested information ("Information") is provided only for the delegation +% of domain names and the operation of the DNS administered by NIC Mexico. + +% It is absolutely prohibited to use the Information for other purposes, +% including sending not requested emails for advertising or promoting products +% and services purposes (SPAM) without the authorization of the owners of the +% Information and NIC Mexico. + +% The database generated from the delegation system is protected by the +% intellectual property laws and all international treaties on the matter. + +% If you need more information on the records displayed here, please contact us +% by email at ayuda@nic.mx . + +% If you want notify the receipt of SPAM or unauthorized access, please send a +% email to abuse@nic.mx . + +% NOTA: La fecha de expiracion mostrada en esta consulta es la fecha que el +% registrar tiene contratada para el nombre de dominio en el registry. Esta +% fecha no necesariamente refleja la fecha de expiracion del nombre de dominio +% que el registrante tiene contratada con el registrar. Puede consultar la base +% de datos de Whois del registrar para ver la fecha de expiracion reportada por +% el registrar para este nombre de dominio. + +% La informacion que ha solicitado se provee exclusivamente para fines +% relacionados con la delegacion de nombres de dominio y la operacion del DNS +% administrado por NIC Mexico. + +% Queda absolutamente prohibido su uso para otros propositos, incluyendo el +% envio de Correos Electronicos no solicitados con fines publicitarios o de +% promocion de productos y servicios (SPAM) sin mediar la autorizacion de los +% afectados y de NIC Mexico. + +% La base de datos generada a partir del sistema de delegacion, esta protegida +% por las leyes de Propiedad Intelectual y todos los tratados internacionales +% sobre la materia. + +% Si necesita mayor informacion sobre los registros aqui mostrados, favor de +% comunicarse a ayuda@nic.mx. + +% Si desea notificar sobre correo no solicitado o accesos no autorizados, favor +% de enviar su mensaje a abuse@nic.mx. + + diff --git a/test/data/google.co.jp b/test/data/google.co.jp new file mode 100644 index 0000000..9001689 --- /dev/null +++ b/test/data/google.co.jp @@ -0,0 +1,33 @@ +[ JPRS database provides information on network administration. Its use is ] +[ restricted to network administration purposes. For further information, ] +[ use 'whois -h whois.jprs.jp help'. To suppress Japanese output, add'/e' ] +[ at the end of command, e.g. 'whois -h whois.jprs.jp xxx/e'. ] +[ ] +[ Notice -------------------------------------------------------------------- ] +[ JPRS will change JPRS WHOIS (web-based and port 43 Whois service) about the ] +[ following two points on January 18, 2015. ] +[ ] +[ 1) Change of the format of response about gTLD domain name ] +[ 2) Change of the character encoding ] +[ ] +[ For further information, please see the following webpage. ] +[ http://jprs.jp/whatsnew/notice/2014/20140319-whois.html (only in Japanese) ] +[ --------------------------------------------------------------------------- ] + +Domain Information: +a. [Domain Name] GOOGLE.CO.JP +g. [Organization] Google Japan +l. [Organization Type] corporation +m. [Administrative Contact] DL152JP +n. [Technical Contact] TW124137JP +p. [Name Server] ns1.google.com +p. [Name Server] ns2.google.com +p. [Name Server] ns3.google.com +p. [Name Server] ns4.google.com +s. [Signing Key] +[State] Connected (2015/03/31) +[Registered Date] 2001/03/22 +[Connected Date] 2001/03/22 +[Last Update] 2014/04/01 01:18:23 (JST) + + diff --git a/test/data/google.co.th b/test/data/google.co.th new file mode 100644 index 0000000..c2efd48 --- /dev/null +++ b/test/data/google.co.th @@ -0,0 +1,34 @@ + +Whois Server Version 2.1.2 + +Domain: GOOGLE.CO.TH +Registrar: T.H.NIC Co., Ltd. +Name Server: NS1.GOOGLE.COM +Name Server: NS2.GOOGLE.COM +Name Server: NS3.GOOGLE.COM +Name Server: NS4.GOOGLE.COM +Status: ACTIVE +Updated date: 19 Jun 2014 +Created date: 8 Oct 2004 +Renew date: 8 Oct 2013 +Exp date: 7 Oct 2014 +Domain Holder: Google Inc. +1600 Amphitheatre Parkway +Mountain View, CA 94043 +94043 +US + +Tech Contact: 491182 +Markmonitor +391 N. Ancestor PL +Boise ID +83704 +US + + + +>>> Last update of whois data: Fri, 27 Jun 2014 15:46:58 UTC+7 <<< + +For more information please visit: https://www.thnic.co.th/whois + + 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/google.it b/test/data/google.it new file mode 100644 index 0000000..7406b6f --- /dev/null +++ b/test/data/google.it @@ -0,0 +1,63 @@ + +********************************************************************* +* Please note that the following result could be a subgroup of * +* the data contained in the database. * +* * +* Additional information can be visualized at: * +* http://www.nic.it/cgi-bin/Whois/whois.cgi * +********************************************************************* + +Domain: google.it +Status: ok +Created: 1999-12-10 00:00:00 +Last Update: 2014-05-07 00:52:45 +Expire Date: 2015-04-21 + +Registrant + Name: Google Ireland Holdings + Organization: Google Ireland Holdings + ContactID: DUP430692088 + Address: 70 Sir John Rogersons Quay + Dublin + 2 + IE + IE + Created: 2013-04-21 01:05:35 + Last Update: 2013-04-21 01:05:35 + +Admin Contact + Name: Tsao Tu + Organization: Tu Tsao + ContactID: DUP142437129 + Address: 70 Sir John Rogersons Quay + Dublin + 2 + IE + IE + Created: 2013-04-21 01:05:35 + Last Update: 2013-04-21 01:05:35 + +Technical Contacts + Name: Google Ireland Holdings + Organization: Google Ireland Holdings + ContactID: DUP430692088 + Address: 70 Sir John Rogersons Quay + Dublin + 2 + IE + IE + Created: 2013-04-21 01:05:35 + Last Update: 2013-04-21 01:05:35 + +Registrar + Organization: MarkMonitor International Limited + Name: MARKMONITOR-REG + Web: https://www.markmonitor.com/ + +Nameservers + ns1.google.com + ns4.google.com + ns2.google.com + ns3.google.com + + diff --git a/test/data/nic.ir b/test/data/nic.ir new file mode 100644 index 0000000..730cb6e --- /dev/null +++ b/test/data/nic.ir @@ -0,0 +1,45 @@ +% This is the IRNIC Whois server v1.6.2. +% Available on web at http://whois.nic.ir/ +% Find the terms and conditions of use on http://www.nic.ir/ +% +% This server uses UTF-8 as the encoding for requests and responses. + +% NOTE: This output has been filtered. + +% Information related to 'nic.ir' + + +domain: nic.ir +ascii: nic.ir +remarks: (Domain Holder) Dot-IR (.ir) ccTLD Registry, Institute for Studies in Theoretical Physics and Mathematics (IPM) +remarks: (Domain Holder Address) Shahid Bahonar (Niavaran) Sq., Tehran, Tehran, IR +holder-c: ir00-irnic +admin-c: ir00-irnic +tech-c: as51-irnic +nserver: ns1.nic.ir +nserver: ns.nic.ir +nserver: ns5.univie.ac.at +nserver: auth51.ns.uu.net +last-updated: 2010-05-09 +expire-date: 2015-05-26 +source: IRNIC # Filtered + +nic-hdl: ir00-irnic +org: Dot-IR (.ir) ccTLD Registry, Institute for Studies in Theoretical Physics and Mathematics (IPM) +e-mail: info@nic.ir +address: Shahid Bahonar (Niavaran) Sq., Tehran, Tehran, IR +phone: +98 21 2229 0306 +fax-no: +98 21 2229 5700 +source: IRNIC # Filtered + +nic-hdl: as51-irnic +person: Alireza Saleh +e-mail: arsaleh@gmail.com +source: IRNIC # Filtered + +domain: nic.ir +ascii: nic.ir +remarks: This domain is only available for registration under certain conditions +source: IRNIC # Filtered + + diff --git a/test/data/nttpc.co.jp b/test/data/nttpc.co.jp new file mode 100644 index 0000000..f93c537 --- /dev/null +++ b/test/data/nttpc.co.jp @@ -0,0 +1,31 @@ +[ JPRS database provides information on network administration. Its use is ] +[ restricted to network administration purposes. For further information, ] +[ use 'whois -h whois.jprs.jp help'. To suppress Japanese output, add'/e' ] +[ at the end of command, e.g. 'whois -h whois.jprs.jp xxx/e'. ] +[ ] +[ Notice -------------------------------------------------------------------- ] +[ JPRS will change JPRS WHOIS (web-based and port 43 Whois service) about the ] +[ following two points on January 18, 2015. ] +[ ] +[ 1) Change of the format of response about gTLD domain name ] +[ 2) Change of the character encoding ] +[ ] +[ For further information, please see the following webpage. ] +[ http://jprs.jp/whatsnew/notice/2014/20140319-whois.html (only in Japanese) ] +[ --------------------------------------------------------------------------- ] + +Domain Information: +a. [Domain Name] NTTPC.CO.JP +g. [Organization] NTT PC Communications Incorporated +l. [Organization Type] Corporation +m. [Administrative Contact] TY4708JP +n. [Technical Contact] YA6489JP +p. [Name Server] ns1.sphere.ad.jp +p. [Name Server] ns2.sphere.ad.jp +s. [Signing Key] +[State] Connected (2015/03/31) +[Registered Date] +[Connected Date] +[Last Update] 2014/04/01 01:10:41 (JST) + + 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/redd.it b/test/data/redd.it new file mode 100644 index 0000000..b526888 --- /dev/null +++ b/test/data/redd.it @@ -0,0 +1,48 @@ + +********************************************************************* +* Please note that the following result could be a subgroup of * +* the data contained in the database. * +* * +* Additional information can be visualized at: * +* http://www.nic.it/cgi-bin/Whois/whois.cgi * +********************************************************************* + +Domain: redd.it +Status: ok +Created: 2010-05-31 09:49:27 +Last Update: 2013-09-22 00:52:31 +Expire Date: 2014-09-22 + +Registrant + Name: Corporation Service Company France + Organization: Corporation Service Company France + ContactID: DUP181111842 + Address: 68, rue du faubourg Saint Honore + Paris + 75008 + Paris + FR + Created: 2013-09-22 00:44:16 + Last Update: 2013-09-22 00:44:16 + +Admin Contact + Name: GANDI CORPORATE + Organization: GANDI CORPORATE + ContactID: C4195-GANDI-EQUL + +Technical Contacts + Name: Domain Administrator + Organization: Reddit Inc + ContactID: R3511-GANDI-HIRR + +Registrar + Organization: Gandi SAS + Name: GANDI-REG + Web: http://www.gandi.net + +Nameservers + c.dns.gandi.net + a.dns.gandi.net + b.dns.gandi.net + + diff --git a/test/data/ricoh.co.th b/test/data/ricoh.co.th new file mode 100644 index 0000000..ac590f9 --- /dev/null +++ b/test/data/ricoh.co.th @@ -0,0 +1,35 @@ + +Whois Server Version 2.1.2 + +Domain: RICOH.CO.TH +Registrar: T.H.NIC Co., Ltd. +Name Server: NS.CSCOMS.COM +Name Server: NS2.CSCOMS.COM +Status: ACTIVE +Updated date: 5 Aug 2013 +Created date: 5 Nov 1999 +Renew date: 5 Nov 2012 +Exp date: 4 Nov 2014 +Domain Holder: RICOH (THAILAND) CO., LTD. (บริษัท ริโก้ (ประเทศไทย) จำกัด) +Ricoh (Thailand) Ltd. +341 Onnuj Road, +Prawet, Prawet , +Bangkok +10250 +TH + +Tech Contact: 503400 +บริษัท ริโก้(ประเทศไทย)จำกัด +341 ถนนอ่อนนุช +แขวงประเวศ เขตประเวศ +กรุงเทพมหานคร +10250 +TH + + + +>>> Last update of whois data: Fri, 27 Jun 2014 16:34:18 UTC+7 <<< + +For more information please visit: https://www.thnic.co.th/whois + + diff --git a/test/data/rs.co.th b/test/data/rs.co.th new file mode 100644 index 0000000..18b8dda --- /dev/null +++ b/test/data/rs.co.th @@ -0,0 +1,30 @@ + +Whois Server Version 2.1.2 + +Domain: RS.CO.TH +Registrar: T.H.NIC Co., Ltd. +Name Server: CLARINET.ASIANET.CO.TH +Name Server: CONDUCTOR.ASIANET.CO.TH +Status: ACTIVE +Updated date: 1 Feb 2012 +Created date: 19 Jan 2007 +Renew date: 18 Mar 2012 +Exp date: 17 Mar 2017 +Domain Holder: RS. Promotion PCL. ( บริษัท อาร์.เอส.โปรโมชั่น จำกัด (มหาชน) ) +419/2 Chetchottisak Building JatujakLadphoa Bangkok 10900, BKK +10900 +TH + +Tech Contact: 37581 +RS Promotion Public Co.,Ltd. +419/2 Chetchottisak Building JatujakLadphoa Bangkok 10900, bangkok +10900 +TH + + + +>>> Last update of whois data: Fri, 27 Jun 2014 16:34:24 UTC+7 <<< + +For more information please visit: https://www.thnic.co.th/whois + + diff --git a/test/data/servequake.com b/test/data/servequake.com new file mode 100644 index 0000000..5411861 --- /dev/null +++ b/test/data/servequake.com @@ -0,0 +1,90 @@ +Whois Server Version 2.0 + +NOTICE: Access to No-IP.com WHOIS information is provided to assist persons in +determining the contents of a domain name registration record in the No-IP.com +registrar database. The data in this record is provided by No-IP.com +for informational purposes only, and No-Ip.com does not guarantee its +accuracy. This service is intended only for query-based access. You agree +that you will use this data only for lawful purposes and that, under no +circumstances will you use this data to: (a) allow, enable, or otherwise +support the transmission by e-mail, telephone, or facsimile of mass +unsolicited, commercial advertising or solicitations to entities other than +the data recipient's own existing customers; or (b) enable high volume, +automated, electronic processes that send queries or data to the systems of +Registry Operator or any ICANN-Accredited Registrar, except as reasonably +necessary to register domain names or modify existing registrations. All +rights reserved. Public Interest Registry reserves the right to modify these terms at any +time. By submitting this query, you agree to abide by this policy. + + +Domain Name: SERVEQUAKE.COM +Created On: 12-Nov-2004 08:00:00 UTC +Last Updated On: 11-Nov-2011 18:48:29 UTC +Expiration Date: 10-Feb-2015 05:33:35 UTC +Sponsoring Registrar: Vitalwerks Internet Solutions, LLC / No-IP.com +Registrant Name: No-IP.com, Domain Operations +Registrant Organization: Vitalwerks Internet Solutions, LLC +Registrant Street1: 5905 South Virginia St +Registrant Street2: Suite 200 +Registrant City: Reno +Registrant State/Province: NV +Registrant Postal Code: 89502 +Registrant Country: US +Registrant Phone: +1.7758531883 +Registrant FAX: +Registrant Email: domains@no-ip.com + +Admin Name: No-IP.com, Domain Operations +Admin Street1: 5905 South Virginia St +Admin Street2: Suite 200 +Admin City: Reno +Admin State/Province: NV +Admin Postal Code: 89502 +Admin Country: US +Admin Phone: +1.7758531883 +Admin FAX: +Admin Email: domains@no-ip.com + +Tech Name: No-IP.com, Domain Operations +Tech Organization: Vitalwerks Internet Solutions, LLC +Tech Street1: 5905 South Virginia St +Tech Street2: Suite 200 +Tech City: Reno +Tech State/Province: NV +Tech Postal Code: 89502 +Tech Country: US +Tech Phone: +1.7758531883 +Tech FAX: +Tech Email: domains@no-ip.com + +Billing Name: No-IP.com, Domain Operations +Billing Organization: Vitalwerks Internet Solutions, LLC +Billing Street1: 5905 South Virginia St +Billing Street2: Suite 200 +Billing City: Reno +Billing State/Province: NV +Billing Postal Code: 89502 +Billing Country: US +Billing Phone: +1.7758531883 +Billing FAX: +Billing Email: domains@no-ip.com + +Name Server: NF1.NO-IP.COM +Name Server: NF2.NO-IP.COM +Name Server: NF3.NO-IP.COM +Name Server: NF4.NO-IP.COM + + +-- + Domain Name: SERVEQUAKE.COM + Registrar: VITALWERKS INTERNET SOLUTIONS LLC DBA NO-IP + Whois Server: whois.no-ip.com + Referral URL: http://www.no-ip.com + Name Server: NF1.NO-IP.COM + Name Server: NF2.NO-IP.COM + Name Server: NF3.NO-IP.COM + Name Server: NF4.NO-IP.COM + Status: clientTransferProhibited + Updated Date: 11-nov-2011 + Creation Date: 10-feb-2000 + Expiration Date: 10-feb-2015 diff --git a/test/data/siamparagon.co.th b/test/data/siamparagon.co.th new file mode 100644 index 0000000..a23d3bc --- /dev/null +++ b/test/data/siamparagon.co.th @@ -0,0 +1,29 @@ + +Whois Server Version 2.1.2 + +Domain: SIAMPARAGON.CO.TH +Registrar: T.H.NIC Co., Ltd. +Name Server: NS.BEENETS.COM +Name Server: NS2.BEENETS.COM +Status: ACTIVE +Updated date: 12 Apr 2013 +Created date: 25 Mar 2002 +Renew date: 25 Mar 2013 +Exp date: 24 Mar 2016 +Domain Holder: SIAM PARAGON DEVELOPMENT CO., LTD. (บริษัท สยามพารากอน ดีเวลลอปเม้นท์ จำกัด) +991 SIAM Paragon Shopping Center RAMA1 ROAD, PATUMWAN, BANGKOK +10330 +TH + +Tech Contact: 15190 +991 ศูนย์การค้า สยามพารากอน ถ.พระราม 1 แขวงปทุมวัน เขตปทุมวัน กรุงเทพฯ +10330 +TH + + + +>>> Last update of whois data: Fri, 27 Jun 2014 16:32:46 UTC+7 <<< + +For more information please visit: https://www.thnic.co.th/whois + + diff --git a/test/data/starbucks.co.th b/test/data/starbucks.co.th new file mode 100644 index 0000000..c6801d8 --- /dev/null +++ b/test/data/starbucks.co.th @@ -0,0 +1,31 @@ + +Whois Server Version 2.1.2 + +Domain: STARBUCKS.CO.TH +Registrar: T.H.NIC Co., Ltd. +Name Server: NS.KSC.CO.TH +Name Server: NS2.KSC.CO.TH +Status: ACTIVE +Updated date: 10 Sep 2009 +Created date: 17 Jun 2003 +Renew date: 17 Jun 2003 +Exp date: 16 Dec 2014 +Domain Holder: Starbucks Coffee ( Thailand ) Co., Ltd. +12th floor,Exchange Tower, 388 Sukhumvit Road, Klongtoey, Bangkok +10110 +TH + +Tech Contact: 24897 +บริษัท เคเอสซี คอมเมอร์เชียล อินเตอร์เนต จำกัด +2/4 อาคารไทยพาณิชย์สามัคคีประกันภัย ชั้น 10 ถนนวิภาวดีรังสิต +แขวงทุ่งสองห้อง เขตหลักสี่ กรุงเทพฯ +10210 +TH + + + +>>> Last update of whois data: Tue, 24 Jun 2014 04:58:54 UTC+7 <<< + +For more information please visit: https://www.thnic.co.th/whois + + diff --git a/test/data/tip.it b/test/data/tip.it new file mode 100644 index 0000000..0029fd0 --- /dev/null +++ b/test/data/tip.it @@ -0,0 +1,46 @@ + +********************************************************************* +* Please note that the following result could be a subgroup of * +* the data contained in the database. * +* * +* Additional information can be visualized at: * +* http://www.nic.it/cgi-bin/Whois/whois.cgi * +********************************************************************* + +Domain: tip.it +Status: ok +Created: 1997-09-26 00:00:00 +Last Update: 2013-10-16 00:43:15 +Expire Date: 2014-09-30 + +Registrant + Name: Sandro Fanelli + Organization: Sandro Fanelli + ContactID: SF3221 + +Admin Contact + Name: Sandro Fanelli + Organization: Sandro Fanelli + ContactID: SF3221 + +Technical Contacts + Name: Technical Support + Organization: Register.it S.p.A. + ContactID: 2409-REGT + Address: Via Zanchi 22 + Bergamo + 24126 + BG + IT + Created: 2009-09-28 11:01:09 + Last Update: 2012-04-27 15:13:45 + +Registrar + Organization: Register.it s.p.a. + Name: REGISTER-REG + +Nameservers + ns1.softlayer.com + ns2.softlayer.com + + diff --git a/test/data/toyota.co.th b/test/data/toyota.co.th new file mode 100644 index 0000000..c80b26f --- /dev/null +++ b/test/data/toyota.co.th @@ -0,0 +1,32 @@ + +Whois Server Version 2.1.2 + +Domain: TOYOTA.CO.TH +Registrar: T.H.NIC Co., Ltd. +Name Server: NS1.NTT.CO.TH +Name Server: NS1.TOYOTA.CO.TH +Name Server: NS2.TOYOTA.CO.TH +Status: ACTIVE +Updated date: 20 Jan 2014 +Created date: 17 Jan 1999 +Renew date: 17 Jan 2014 +Exp date: 16 Jan 2015 +Domain Holder: Toyota Motor Thailand Co., Ltd. ( บริษัท โตโยต้า มอเตอร์ ประเทศไทย จำกัด ) +186/1 Mu1 Old Railway Rd., Samrong Tai, PhraPradaeng, Samut Prakan +10130 +TH + +Tech Contact: 92144 +Toyota Motor Asia Pacific Engineering & Manufacturing Co.,Ltd. +99 Moo 5, Bangna-Trad K.M. 29.5 Rd., Ban-Ragad, +Bang Bor, Samutprakarn +10560 +TH + + + +>>> Last update of whois data: Fri, 27 Jun 2014 16:34:06 UTC+7 <<< + +For more information please visit: https://www.thnic.co.th/whois + + diff --git a/test/data/unwire.hk b/test/data/unwire.hk new file mode 100644 index 0000000..f88aaae --- /dev/null +++ b/test/data/unwire.hk @@ -0,0 +1,110 @@ + + ------------------------------------------------------------------------------- + Whois server by HKIRC + ------------------------------------------------------------------------------- + .hk top level Domain names can be registered via HKIRC-Accredited Registrars. + Go to https://www.hkirc.hk/content.jsp?id=280 for details. + ------------------------------------------------------------------------------- + + + +Domain Name: UNWIRE.HK + +Domain Status: Active + +Contract Version: HKDNR latest version + +Registrar Name: Hong Kong Domain Name Registration Company Limited + +Registrar Contact Information: Email: enquiry@hkdnr.hk Hotline: +852 2319 1313 + +Reseller: + + + + +Registrant Contact Information: + +Company English Name (It should be the same as the registered/corporation name on your Business Register Certificate or relevant documents): UNWIRE LIMITED +Company Chinese name: +Address: HK +Country: HK +Email: mkt@bmedia.hk +Domain Name Commencement Date: 24-06-2009 +Expiry Date: 24-06-2021 +Re-registration Status: Complete + + + +Administrative Contact Information: + +Given name: AMAZING +Family name: SHREK +Company name: UNWIRE LIMITED +Address: HK +Country: HK +Phone: +852-123456 +Fax: +Email: mkt@bmedia.hk +Account Name: HK3507379T + + + + +Technical Contact Information: + +Family name: CHEUNG +Company name: UNWIRE LIMITED +Address: HK +Country: HK +Phone: +852-123456 +Fax: +Email: mkt@bmedia.hk + + + + +Name Servers Information: + +NORM.NS.CLOUDFLARE.COM +ZOE.NS.CLOUDFLARE.COM + + + +Status Information: + +Domain Prohibit Status: + + + + ------------------------------------------------------------------------------- + The Registry contains ONLY .com.hk, .net.hk, .edu.hk, .org.hk, + .gov.hk, idv.hk. and .hk $domains. + ------------------------------------------------------------------------------- + +WHOIS Terms of Use +By using this WHOIS search enquiry service you agree to these terms of use. +The data in HKDNR's WHOIS search engine is for information purposes only and HKDNR does not guarantee the accuracy of the data. The data is provided to assist people to obtain information about the registration record of domain names registered by HKDNR. You agree to use the data for lawful purposes only. + +You are not authorised to use high-volume, electronic or automated processes to access, query or harvest data from this WHOIS search enquiry service. + +You agree that you will not and will not allow anyone else to: + +a. use the data for mass unsolicited commercial advertising of any sort via any medium including telephone, email or fax; or + +b. enable high volume, automated or electronic processes that apply to HKDNR or its computer systems including the WHOIS search enquiry service; or + +c. without the prior written consent of HKDNR compile, repackage, disseminate, disclose to any third party or use the data for a purpose other than obtaining information about a domain name registration record; or + +d. use such data to derive an economic benefit for yourself. + +HKDNR in its sole discretion may terminate your access to the WHOIS search enquiry service (including, without limitation, blocking your IP address) at any time including, without limitation, for excessive use of the WHOIS search enquiry service. + +HKDNR may modify these terms of use at any time by publishing the modified terms of use on its website. + + + + + + + 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/whoiser.ir b/test/data/whoiser.ir new file mode 100644 index 0000000..74c7d9d --- /dev/null +++ b/test/data/whoiser.ir @@ -0,0 +1,32 @@ +% This is the IRNIC Whois server v1.6.2. +% Available on web at http://whois.nic.ir/ +% Find the terms and conditions of use on http://www.nic.ir/ +% +% This server uses UTF-8 as the encoding for requests and responses. + +% NOTE: This output has been filtered. + +% Information related to 'whoiser.ir' + + +domain: whoiser.ir +ascii: whoiser.ir +remarks: (Domain Holder) Mohsen Jadidi +remarks: (Domain Holder Address) Andishe, Faz 3, Mahale 23 St., Shahed St., Baharan St., No. 12,, Shahraiar, Tehran, IR +holder-c: mj205-irnic +admin-c: mj205-irnic +tech-c: mj205-irnic +nserver: ns1.webmasir.com +nserver: ns2.webmasir.com +last-updated: 2014-06-01 +expire-date: 2017-03-03 +source: IRNIC # Filtered + +nic-hdl: mj205-irnic +person: Mohsen Jadidi +e-mail: mnjadidi@gmail.com +address: Andishe, Faz 3, Mahale 23 St., Shahed St., Baharan St., No. 12,, Shahraiar, Tehran, IR +phone: +982623554491 +source: IRNIC # Filtered + + 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/data/yahoo.it b/test/data/yahoo.it new file mode 100644 index 0000000..877fc59 --- /dev/null +++ b/test/data/yahoo.it @@ -0,0 +1,63 @@ + +********************************************************************* +* Please note that the following result could be a subgroup of * +* the data contained in the database. * +* * +* Additional information can be visualized at: * +* http://www.nic.it/cgi-bin/Whois/whois.cgi * +********************************************************************* + +Domain: yahoo.it +Status: ok +Created: 1998-05-11 00:00:00 +Last Update: 2013-12-06 00:48:58 +Expire Date: 2014-11-20 + +Registrant + Name: Yahoo! Italia S.r.l. + Organization: Yahoo! Italia S.r.l. + ContactID: DUP211874838 + Address: via Spadolini 7 + Milano + 20141 + MI + IT + Created: 2012-11-02 07:30:15 + Last Update: 2012-11-02 07:30:15 + +Admin Contact + Name: Martini Massimo Ernesto Aldo + ContactID: DUP975799853 + Address: via Spadolini 7 + Milano + 20141 + MI + IT + Created: 2012-11-02 07:30:15 + Last Update: 2012-11-02 07:30:15 + +Technical Contacts + Name: Yahoo Inc + ContactID: DUP285050789 + Address: Domain Administrator + 701 First Avenue + Sunnyvale + 94089 + CALIFORNIA + US + Created: 2012-11-02 07:30:16 + Last Update: 2012-11-02 07:30:16 + +Registrar + Organization: MarkMonitor International Limited + Name: MARKMONITOR-REG + Web: https://www.markmonitor.com/ + +Nameservers + ns1.yahoo.com + ns5.yahoo.com + ns7.yahoo.com + ns2.yahoo.com + ns3.yahoo.com + + diff --git a/test/target_default/asiahotel.co.th b/test/target_default/asiahotel.co.th new file mode 100644 index 0000000..3354c78 --- /dev/null +++ b/test/target_default/asiahotel.co.th @@ -0,0 +1 @@ +{"status": ["ACTIVE"], "updated_date": ["2013-12-25T00:00:00"], "contacts": {"admin": null, "tech": {"city": "Bangkok", "handle": "85476", "street": "296 Phayathai Road Ratchathewi", "country": "TH", "postalcode": "10400", "organization": "Asia Hotel Public Co.,Ltd."}, "registrant": {"city": "Bangkok", "street": "296 Phayathai Road Ratchathewi", "country": "TH", "postalcode": "10400", "organization": "Asia Hotel Public Co., Ltd. ( \u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e40\u0e2d\u0e40\u0e0a\u0e35\u0e22\u0e42\u0e2e\u0e40\u0e15\u0e47\u0e25 \u0e08\u0e33\u0e01\u0e31\u0e14 (\u0e21\u0e2b\u0e32\u0e0a\u0e19) )"}, "billing": null}, "nameservers": ["NS1.ASIAHOTEL.CO.TH", "NS2.ASIAHOTEL.CO.TH"], "expiration_date": ["2017-01-16T00:00:00"], "creation_date": ["1999-01-17T00:00:00", "1999-01-17T00:00:00"], "raw": ["\nWhois Server Version 2.1.2\n\nDomain: ASIAHOTEL.CO.TH\nRegistrar: T.H.NIC Co., Ltd.\nName Server: NS1.ASIAHOTEL.CO.TH\nName Server: NS2.ASIAHOTEL.CO.TH\nStatus: ACTIVE\nUpdated date: 25 Dec 2013\nCreated date: 17 Jan 1999\nRenew date: 17 Jan 2014\nExp date: 16 Jan 2017\nDomain Holder: Asia Hotel Public Co., Ltd. ( \u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e40\u0e2d\u0e40\u0e0a\u0e35\u0e22\u0e42\u0e2e\u0e40\u0e15\u0e47\u0e25 \u0e08\u0e33\u0e01\u0e31\u0e14 (\u0e21\u0e2b\u0e32\u0e0a\u0e19) )\n296 Phayathai Road Ratchathewi, Bangkok\n10400\nTH\n\nTech Contact: 85476\nAsia Hotel Public Co.,Ltd.\n296 Phayathai Road Ratchathewi, Bangkok\n10400\nTH\n\n\n\n>>> Last update of whois data: Fri, 27 Jun 2014 14:54:30 UTC+7 <<<\n\nFor more information please visit: https://www.thnic.co.th/whois\n\n\n"], "registrar": ["T.H.NIC Co., Ltd."]} \ No newline at end of file diff --git a/test/target_default/bts.co.th b/test/target_default/bts.co.th new file mode 100644 index 0000000..032e4ad --- /dev/null +++ b/test/target_default/bts.co.th @@ -0,0 +1 @@ +{"status": ["ACTIVE"], "updated_date": ["2009-07-18T00:00:00"], "contacts": {"admin": null, "tech": {"city": "Bangkok", "handle": "74252", "street": "304 Suapha Rd.\nPomprab\nPomprab Suttruphai", "country": "TH", "postalcode": "10110", "organization": "Loxley Information Services Co., Ltd."}, "registrant": {"city": "Bangkok", "street": "BTS Building\nPhaholyothin Rd.,Lardpao\nChatujak", "country": "TH", "postalcode": "10900", "organization": "Bangkok Mass Transit System Public Company Limited (\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e23\u0e30\u0e1a\u0e1a\u0e02\u0e19\u0e2a\u0e48\u0e07\u0e21\u0e27\u0e25\u0e0a\u0e19\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e \u0e08\u0e33\u0e01\u0e31\u0e14 (\u0e21\u0e2b\u0e32\u0e0a\u0e19))"}, "billing": null}, "nameservers": ["NS.LOXINFO.CO.TH", "NS.TNET.CO.TH"], "expiration_date": ["2021-08-03T00:00:00"], "creation_date": ["1999-08-04T00:00:00", "1999-08-04T00:00:00"], "raw": ["\nWhois Server Version 2.1.2\n\nDomain: BTS.CO.TH\nRegistrar: T.H.NIC Co., Ltd.\nName Server: NS.LOXINFO.CO.TH\nName Server: NS.TNET.CO.TH\nStatus: ACTIVE\nUpdated date: 18 Jul 2009\nCreated date: 4 Aug 1999\nRenew date: 4 Aug 1999\nExp date: 3 Aug 2021\nDomain Holder: Bangkok Mass Transit System Public Company Limited (\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e23\u0e30\u0e1a\u0e1a\u0e02\u0e19\u0e2a\u0e48\u0e07\u0e21\u0e27\u0e25\u0e0a\u0e19\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e \u0e08\u0e33\u0e01\u0e31\u0e14 (\u0e21\u0e2b\u0e32\u0e0a\u0e19))\nBTS Building, Phaholyothin Rd.,Lardpao, Chatujak, Bangkok\n10900\nTH\n\nTech Contact: 74252\nLoxley Information Services Co., Ltd.\n304 Suapha Rd., Pomprab, Pomprab Suttruphai, Bangkok\n10110\nTH\n\n\n\n>>> Last update of whois data: Fri, 27 Jun 2014 16:32:41 UTC+7 <<<\n\nFor more information please visit: https://www.thnic.co.th/whois\n\n\n"], "registrar": ["T.H.NIC Co., Ltd."]} \ No newline at end of file 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/expopack.com.mx b/test/target_default/expopack.com.mx new file mode 100644 index 0000000..103e556 --- /dev/null +++ b/test/target_default/expopack.com.mx @@ -0,0 +1 @@ +{"updated_date": ["2011-04-09T00:00:00"], "contacts": {"admin": {"city": "Ciudad de Mexico", "state": "Distrito Federal", "name": "Alejandra Aguirre", "country": "Mexico"}, "tech": {"city": "Ciudad de Mexico", "state": "Distrito Federal", "name": "Alejandra Aguirre", "country": "Mexico"}, "registrant": {"city": "Mexico", "state": "Distrito Federal", "name": "EXPO PAK S.A. DE C.V.", "country": "Mexico"}, "billing": {"city": "Ciudad de Mexico", "state": "Distrito Federal", "name": "Alejandra Aguirre", "country": "Mexico"}}, "nameservers": ["ns1.nuestrosite.com", "ns2.nuestrosite.com"], "expiration_date": ["2015-10-06T00:00:00"], "creation_date": ["1999-10-07T00:00:00", "1999-10-07T00:00:00"], "raw": ["\nDomain Name: expopack.com.mx\n\nCreated On: 1999-10-07\nExpiration Date: 2015-10-06\nLast Updated On: 2011-04-09\nRegistrar: Akky (Una division de NIC Mexico)\nURL: http://www.akky.mx\nWhois TCP URI: whois.akky.mx\nWhois Web URL: http://www.akky.mx/jsf/whois/whois.jsf\n\nRegistrant:\n Name: EXPO PAK S.A. DE C.V.\n City: Mexico\n State: Distrito Federal\n Country: Mexico\n\nAdministrative Contact:\n Name: Alejandra Aguirre\n City: Ciudad de Mexico\n State: Distrito Federal\n Country: Mexico\n\nTechnical Contact:\n Name: Alejandra Aguirre\n City: Ciudad de Mexico\n State: Distrito Federal\n Country: Mexico\n\nBilling Contact:\n Name: Alejandra Aguirre\n City: Ciudad de Mexico\n State: Distrito Federal\n Country: Mexico\n\nName Servers:\n DNS: ns1.nuestrosite.com \n DNS: ns2.nuestrosite.com \n\n\n% NOTICE: The expiration date displayed in this record is the date the\n% registrar's sponsorship of the domain name registration in the registry is\n% currently set to expire. This date does not necessarily reflect the\n% expiration date of the domain name registrant's agreement with the sponsoring\n% registrar. Users may consult the sponsoring registrar's Whois database to\n% view the registrar's reported date of expiration for this registration.\n\n% The requested information (\"Information\") is provided only for the delegation\n% of domain names and the operation of the DNS administered by NIC Mexico.\n\n% It is absolutely prohibited to use the Information for other purposes, \n% including sending not requested emails for advertising or promoting products\n% and services purposes (SPAM) without the authorization of the owners of the\n% Information and NIC Mexico.\n\n% The database generated from the delegation system is protected by the\n% intellectual property laws and all international treaties on the matter.\n\n% If you need more information on the records displayed here, please contact us\n% by email at ayuda@nic.mx .\n\n% If you want notify the receipt of SPAM or unauthorized access, please send a\n% email to abuse@nic.mx .\n\n% NOTA: La fecha de expiracion mostrada en esta consulta es la fecha que el\n% registrar tiene contratada para el nombre de dominio en el registry. Esta\n% fecha no necesariamente refleja la fecha de expiracion del nombre de dominio\n% que el registrante tiene contratada con el registrar. Puede consultar la base\n% de datos de Whois del registrar para ver la fecha de expiracion reportada por\n% el registrar para este nombre de dominio.\n\n% La informacion que ha solicitado se provee exclusivamente para fines\n% relacionados con la delegacion de nombres de dominio y la operacion del DNS\n% administrado por NIC Mexico.\n\n% Queda absolutamente prohibido su uso para otros propositos, incluyendo el\n% envio de Correos Electronicos no solicitados con fines publicitarios o de\n% promocion de productos y servicios (SPAM) sin mediar la autorizacion de los\n% afectados y de NIC Mexico.\n\n% La base de datos generada a partir del sistema de delegacion, esta protegida\n% por las leyes de Propiedad Intelectual y todos los tratados internacionales\n% sobre la materia.\n\n% Si necesita mayor informacion sobre los registros aqui mostrados, favor de\n% comunicarse a ayuda@nic.mx.\n\n% Si desea notificar sobre correo no solicitado o accesos no autorizados, favor\n% de enviar su mensaje a abuse@nic.mx.\n\n\n"], "registrar": ["Akky (Una division de NIC Mexico)"], "emails": ["ayuda@nic.mx", "abuse@nic.mx"]} \ No newline at end of file diff --git a/test/target_default/google.co.jp b/test/target_default/google.co.jp new file mode 100644 index 0000000..27488c9 --- /dev/null +++ b/test/target_default/google.co.jp @@ -0,0 +1 @@ +{"status": ["Connected (2015/03/31)"], "updated_date": ["2014-04-01T01:18:23"], "contacts": {"admin": {"handle": "DL152JP"}, "tech": {"handle": "TW124137JP"}, "registrant": {"organization": "Google Japan"}, "billing": null}, "nameservers": ["ns1.google.com", "ns2.google.com", "ns3.google.com", "ns4.google.com"], "creation_date": ["2001-03-22T00:00:00"], "raw": ["[ JPRS database provides information on network administration. Its use is ]\n[ restricted to network administration purposes. For further information, ]\n[ use 'whois -h whois.jprs.jp help'. To suppress Japanese output, add'/e' ]\n[ at the end of command, e.g. 'whois -h whois.jprs.jp xxx/e'. ]\n[ ]\n[ Notice -------------------------------------------------------------------- ]\n[ JPRS will change JPRS WHOIS (web-based and port 43 Whois service) about the ]\n[ following two points on January 18, 2015. ]\n[ ]\n[ 1) Change of the format of response about gTLD domain name ]\n[ 2) Change of the character encoding ]\n[ ]\n[ For further information, please see the following webpage. ]\n[ http://jprs.jp/whatsnew/notice/2014/20140319-whois.html (only in Japanese) ]\n[ --------------------------------------------------------------------------- ]\n\nDomain Information:\na. [Domain Name] GOOGLE.CO.JP\ng. [Organization] Google Japan\nl. [Organization Type] corporation\nm. [Administrative Contact] DL152JP\nn. [Technical Contact] TW124137JP\np. [Name Server] ns1.google.com\np. [Name Server] ns2.google.com\np. [Name Server] ns3.google.com\np. [Name Server] ns4.google.com\ns. [Signing Key] \n[State] Connected (2015/03/31)\n[Registered Date] 2001/03/22\n[Connected Date] 2001/03/22\n[Last Update] 2014/04/01 01:18:23 (JST)\n\n\n"]} \ No newline at end of file diff --git a/test/target_default/google.co.th b/test/target_default/google.co.th new file mode 100644 index 0000000..2db69ea --- /dev/null +++ b/test/target_default/google.co.th @@ -0,0 +1 @@ +{"status": ["ACTIVE"], "updated_date": ["2014-06-19T00:00:00"], "contacts": {"admin": null, "tech": {"city": "Boise", "handle": "491182", "state": "ID", "street": "391 N. Ancestor PL", "country": "US", "postalcode": "83704", "organization": "Markmonitor"}, "registrant": {"city": "Mountain View,", "state": "CA", "street": "1600 Amphitheatre Parkway", "country": "US", "postalcode": "94043", "organization": "Google Inc."}, "billing": null}, "nameservers": ["NS1.GOOGLE.COM", "NS2.GOOGLE.COM", "NS3.GOOGLE.COM", "NS4.GOOGLE.COM"], "expiration_date": ["2014-10-07T00:00:00"], "creation_date": ["2004-10-08T00:00:00", "2004-10-08T00:00:00"], "raw": ["\nWhois Server Version 2.1.2\n\nDomain: GOOGLE.CO.TH\nRegistrar: T.H.NIC Co., Ltd.\nName Server: NS1.GOOGLE.COM\nName Server: NS2.GOOGLE.COM\nName Server: NS3.GOOGLE.COM\nName Server: NS4.GOOGLE.COM\nStatus: ACTIVE\nUpdated date: 19 Jun 2014\nCreated date: 8 Oct 2004\nRenew date: 8 Oct 2013\nExp date: 7 Oct 2014\nDomain Holder: Google Inc.\n1600 Amphitheatre Parkway\nMountain View, CA 94043\n94043\nUS\n\nTech Contact: 491182\nMarkmonitor\n391 N. Ancestor PL \nBoise ID\n83704\nUS\n\n\n\n>>> Last update of whois data: Fri, 27 Jun 2014 15:46:58 UTC+7 <<<\n\nFor more information please visit: https://www.thnic.co.th/whois\n\n\n"], "registrar": ["T.H.NIC Co., Ltd."]} \ 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/google.it b/test/target_default/google.it new file mode 100644 index 0000000..ef712df --- /dev/null +++ b/test/target_default/google.it @@ -0,0 +1 @@ +{"status": ["ok"], "updated_date": ["2014-05-07T00:52:45", "2013-04-21T01:05:35"], "contacts": {"admin": {"city": "Dublin", "handle": "DUP142437129", "name": "Tsao Tu", "state": "IE", "street": "70 Sir John Rogersons Quay", "country": "IE", "postalcode": "2", "organization": "Tu Tsao", "creationdate": "2013-04-21T01:05:35", "changedate": "2013-04-21T01:05:35"}, "tech": {"city": "Dublin", "handle": "DUP430692088", "name": "Google Ireland Holdings", "state": "IE", "street": "70 Sir John Rogersons Quay", "country": "IE", "postalcode": "2", "organization": "Google Ireland Holdings", "creationdate": "2013-04-21T01:05:35", "changedate": "2013-04-21T01:05:35"}, "registrant": {"city": "Dublin", "handle": "DUP430692088", "name": "Google Ireland Holdings", "state": "IE", "street": "70 Sir John Rogersons Quay", "country": "IE", "postalcode": "2", "organization": "Google Ireland Holdings", "creationdate": "2013-04-21T01:05:35", "changedate": "2013-04-21T01:05:35"}, "billing": null}, "nameservers": ["ns1.google.com", "ns4.google.com", "ns2.google.com", "ns3.google.com"], "expiration_date": ["2015-04-21T00:00:00"], "creation_date": ["1999-12-10T00:00:00", "2013-04-21T01:05:35"], "raw": ["\n*********************************************************************\n* Please note that the following result could be a subgroup of *\n* the data contained in the database. *\n* *\n* Additional information can be visualized at: *\n* http://www.nic.it/cgi-bin/Whois/whois.cgi *\n*********************************************************************\n\nDomain: google.it\nStatus: ok\nCreated: 1999-12-10 00:00:00\nLast Update: 2014-05-07 00:52:45\nExpire Date: 2015-04-21\n\nRegistrant\n Name: Google Ireland Holdings\n Organization: Google Ireland Holdings\n ContactID: DUP430692088\n Address: 70 Sir John Rogersons Quay\n Dublin\n 2\n IE\n IE\n Created: 2013-04-21 01:05:35\n Last Update: 2013-04-21 01:05:35\n\nAdmin Contact\n Name: Tsao Tu\n Organization: Tu Tsao\n ContactID: DUP142437129\n Address: 70 Sir John Rogersons Quay\n Dublin\n 2\n IE\n IE\n Created: 2013-04-21 01:05:35\n Last Update: 2013-04-21 01:05:35\n\nTechnical Contacts\n Name: Google Ireland Holdings\n Organization: Google Ireland Holdings\n ContactID: DUP430692088\n Address: 70 Sir John Rogersons Quay\n Dublin\n 2\n IE\n IE\n Created: 2013-04-21 01:05:35\n Last Update: 2013-04-21 01:05:35\n\nRegistrar\n Organization: MarkMonitor International Limited\n Name: MARKMONITOR-REG\n Web: https://www.markmonitor.com/\n\nNameservers\n ns1.google.com\n ns4.google.com\n ns2.google.com\n ns3.google.com\n\n\n"], "registrar": ["MarkMonitor International Limited"]} \ No newline at end of file diff --git a/test/target_default/nic.ir b/test/target_default/nic.ir new file mode 100644 index 0000000..0710ddf --- /dev/null +++ b/test/target_default/nic.ir @@ -0,0 +1 @@ +{"updated_date": ["2010-05-09T00:00:00"], "contacts": {"admin": {"fax": "+98 21 2229 5700", "handle": "ir00-irnic", "phone": "+98 21 2229 0306", "street": "Shahid Bahonar (Niavaran) Sq.", "city": "Tehran", "country": "IR", "state": "Tehran", "organization": "Dot-IR (.ir) ccTLD Registry, Institute for Studies in Theoretical Physics and Mathematics (IPM)", "email": "info@nic.ir"}, "tech": {"handle": "as51-irnic", "name": "Alireza Saleh", "email": "arsaleh@gmail.com"}, "registrant": {"fax": "+98 21 2229 5700", "handle": "ir00-irnic", "phone": "+98 21 2229 0306", "street": "Shahid Bahonar (Niavaran) Sq.", "city": "Tehran", "country": "IR", "state": "Tehran", "organization": "Dot-IR (.ir) ccTLD Registry, Institute for Studies in Theoretical Physics and Mathematics (IPM)", "email": "info@nic.ir"}, "billing": null}, "nameservers": ["ns1.nic.ir", "ns.nic.ir", "ns5.univie.ac.at", "auth51.ns.uu.net"], "expiration_date": ["2015-05-26T00:00:00"], "raw": ["% This is the IRNIC Whois server v1.6.2.\n% Available on web at http://whois.nic.ir/\n% Find the terms and conditions of use on http://www.nic.ir/\n% \n% This server uses UTF-8 as the encoding for requests and responses.\n\n% NOTE: This output has been filtered.\n\n% Information related to 'nic.ir'\n\n\ndomain:\t\tnic.ir\nascii:\t\tnic.ir\nremarks:\t(Domain Holder) Dot-IR (.ir) ccTLD Registry, Institute for Studies in Theoretical Physics and Mathematics (IPM)\nremarks:\t(Domain Holder Address) Shahid Bahonar (Niavaran) Sq., Tehran, Tehran, IR\nholder-c:\tir00-irnic\nadmin-c:\tir00-irnic\ntech-c:\t\tas51-irnic\nnserver:\tns1.nic.ir\nnserver:\tns.nic.ir\nnserver:\tns5.univie.ac.at\nnserver:\tauth51.ns.uu.net\nlast-updated:\t2010-05-09\nexpire-date:\t2015-05-26\nsource:\t\tIRNIC # Filtered\n\nnic-hdl:\tir00-irnic\norg:\t\tDot-IR (.ir) ccTLD Registry, Institute for Studies in Theoretical Physics and Mathematics (IPM)\ne-mail:\t\tinfo@nic.ir\naddress:\tShahid Bahonar (Niavaran) Sq., Tehran, Tehran, IR\nphone:\t\t+98 21 2229 0306\nfax-no:\t\t+98 21 2229 5700\nsource:\t\tIRNIC # Filtered\n\nnic-hdl:\tas51-irnic\nperson:\t\tAlireza Saleh\ne-mail:\t\tarsaleh@gmail.com\nsource:\t\tIRNIC # Filtered\n\ndomain:\t\tnic.ir\nascii:\t\tnic.ir\nremarks:\tThis domain is only available for registration under certain conditions\nsource:\t\tIRNIC # Filtered\n\n\n"]} \ No newline at end of file diff --git a/test/target_default/nttpc.co.jp b/test/target_default/nttpc.co.jp new file mode 100644 index 0000000..b0a20a7 --- /dev/null +++ b/test/target_default/nttpc.co.jp @@ -0,0 +1 @@ +{"status": ["Connected (2015/03/31)"], "updated_date": ["2014-04-01T01:10:41"], "nameservers": ["ns1.sphere.ad.jp", "ns2.sphere.ad.jp"], "contacts": {"admin": {"handle": "TY4708JP"}, "tech": {"handle": "YA6489JP"}, "registrant": {"organization": "NTT PC Communications Incorporated"}, "billing": null}, "raw": ["[ JPRS database provides information on network administration. Its use is ]\n[ restricted to network administration purposes. For further information, ]\n[ use 'whois -h whois.jprs.jp help'. To suppress Japanese output, add'/e' ]\n[ at the end of command, e.g. 'whois -h whois.jprs.jp xxx/e'. ]\n[ ]\n[ Notice -------------------------------------------------------------------- ]\n[ JPRS will change JPRS WHOIS (web-based and port 43 Whois service) about the ]\n[ following two points on January 18, 2015. ]\n[ ]\n[ 1) Change of the format of response about gTLD domain name ]\n[ 2) Change of the character encoding ]\n[ ]\n[ For further information, please see the following webpage. ]\n[ http://jprs.jp/whatsnew/notice/2014/20140319-whois.html (only in Japanese) ]\n[ --------------------------------------------------------------------------- ]\n\nDomain Information:\na. [Domain Name] NTTPC.CO.JP\ng. [Organization] NTT PC Communications Incorporated\nl. [Organization Type] Corporation\nm. [Administrative Contact] TY4708JP\nn. [Technical Contact] YA6489JP\np. [Name Server] ns1.sphere.ad.jp\np. [Name Server] ns2.sphere.ad.jp\ns. [Signing Key] \n[State] Connected (2015/03/31)\n[Registered Date] \n[Connected Date] \n[Last Update] 2014/04/01 01:10:41 (JST)\n\n\n"]} \ 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/redd.it b/test/target_default/redd.it new file mode 100644 index 0000000..e83d950 --- /dev/null +++ b/test/target_default/redd.it @@ -0,0 +1 @@ +{"status": ["ok"], "updated_date": ["2013-09-22T00:52:31", "2013-09-22T00:44:16"], "contacts": {"admin": {"handle": "C4195-GANDI-EQUL", "name": "GANDI CORPORATE", "organization": "GANDI CORPORATE"}, "tech": {"handle": "R3511-GANDI-HIRR", "name": "Domain Administrator", "organization": "Reddit Inc"}, "registrant": {"city": "Paris", "handle": "DUP181111842", "name": "Corporation Service Company France", "state": "Paris", "street": "68, rue du faubourg Saint Honore", "country": "FR", "postalcode": "75008", "organization": "Corporation Service Company France", "creationdate": "2013-09-22T00:44:16", "changedate": "2013-09-22T00:44:16"}, "billing": null}, "nameservers": ["c.dns.gandi.net", "a.dns.gandi.net", "b.dns.gandi.net"], "expiration_date": ["2014-09-22T00:00:00"], "creation_date": ["2010-05-31T09:49:27", "2013-09-22T00:44:16"], "raw": ["\n*********************************************************************\n* Please note that the following result could be a subgroup of *\n* the data contained in the database. *\n* *\n* Additional information can be visualized at: *\n* http://www.nic.it/cgi-bin/Whois/whois.cgi *\n*********************************************************************\n\nDomain: redd.it\nStatus: ok\nCreated: 2010-05-31 09:49:27\nLast Update: 2013-09-22 00:52:31\nExpire Date: 2014-09-22\n\nRegistrant\n Name: Corporation Service Company France\n Organization: Corporation Service Company France\n ContactID: DUP181111842\n Address: 68, rue du faubourg Saint Honore\n Paris\n 75008\n Paris\n FR\n Created: 2013-09-22 00:44:16\n Last Update: 2013-09-22 00:44:16\n\nAdmin Contact\n Name: GANDI CORPORATE\n Organization: GANDI CORPORATE\n ContactID: C4195-GANDI-EQUL\n\nTechnical Contacts\n Name: Domain Administrator\n Organization: Reddit Inc\n ContactID: R3511-GANDI-HIRR\n\nRegistrar\n Organization: Gandi SAS\n Name: GANDI-REG\n Web: http://www.gandi.net\n\nNameservers\n c.dns.gandi.net\n a.dns.gandi.net\n b.dns.gandi.net\n\n\n"], "registrar": ["Gandi SAS"]} \ No newline at end of file diff --git a/test/target_default/ricoh.co.th b/test/target_default/ricoh.co.th new file mode 100644 index 0000000..bec1476 --- /dev/null +++ b/test/target_default/ricoh.co.th @@ -0,0 +1 @@ +{"status": ["ACTIVE"], "updated_date": ["2013-08-05T00:00:00"], "contacts": {"admin": null, "tech": {"city": "\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e21\u0e2b\u0e32\u0e19\u0e04\u0e23", "handle": "503400", "country": "TH", "street": "341 \u0e16\u0e19\u0e19\u0e2d\u0e48\u0e2d\u0e19\u0e19\u0e38\u0e0a\n\u0e41\u0e02\u0e27\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e27\u0e28 \u0e40\u0e02\u0e15\u0e1b\u0e23\u0e30\u0e40\u0e27\u0e28", "postalcode": "10250", "organization": "\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e23\u0e34\u0e42\u0e01\u0e49(\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22)\u0e08\u0e33\u0e01\u0e31\u0e14"}, "registrant": {"city": "Bangkok", "district": "Prawet ,", "country": "TH", "street": "Ricoh (Thailand) Ltd.\n341 Onnuj Road,", "postalcode": "10250", "organization": "RICOH (THAILAND) CO., LTD. (\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e23\u0e34\u0e42\u0e01\u0e49 (\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22) \u0e08\u0e33\u0e01\u0e31\u0e14)"}, "billing": null}, "nameservers": ["NS.CSCOMS.COM", "NS2.CSCOMS.COM"], "expiration_date": ["2014-11-04T00:00:00"], "creation_date": ["1999-11-05T00:00:00", "1999-11-05T00:00:00"], "raw": ["\nWhois Server Version 2.1.2\n\nDomain: RICOH.CO.TH\nRegistrar: T.H.NIC Co., Ltd.\nName Server: NS.CSCOMS.COM\nName Server: NS2.CSCOMS.COM\nStatus: ACTIVE\nUpdated date: 5 Aug 2013\nCreated date: 5 Nov 1999\nRenew date: 5 Nov 2012\nExp date: 4 Nov 2014\nDomain Holder: RICOH (THAILAND) CO., LTD. (\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e23\u0e34\u0e42\u0e01\u0e49 (\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22) \u0e08\u0e33\u0e01\u0e31\u0e14)\nRicoh (Thailand) Ltd.\n341 Onnuj Road, \nPrawet, Prawet , \nBangkok\n10250\nTH\n\nTech Contact: 503400\n\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e23\u0e34\u0e42\u0e01\u0e49(\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22)\u0e08\u0e33\u0e01\u0e31\u0e14\n341 \u0e16\u0e19\u0e19\u0e2d\u0e48\u0e2d\u0e19\u0e19\u0e38\u0e0a \n\u0e41\u0e02\u0e27\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e27\u0e28 \u0e40\u0e02\u0e15\u0e1b\u0e23\u0e30\u0e40\u0e27\u0e28\n\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e21\u0e2b\u0e32\u0e19\u0e04\u0e23\n10250\nTH\n\n\n\n>>> Last update of whois data: Fri, 27 Jun 2014 16:34:18 UTC+7 <<<\n\nFor more information please visit: https://www.thnic.co.th/whois\n\n\n"], "registrar": ["T.H.NIC Co., Ltd."]} \ No newline at end of file diff --git a/test/target_default/rs.co.th b/test/target_default/rs.co.th new file mode 100644 index 0000000..6591381 --- /dev/null +++ b/test/target_default/rs.co.th @@ -0,0 +1 @@ +{"status": ["ACTIVE"], "updated_date": ["2012-02-01T00:00:00"], "contacts": {"admin": null, "tech": {"city": "bangkok", "handle": "37581", "street": "419/2 Chetchottisak Building JatujakLadphoa Bangkok 10900", "country": "TH", "postalcode": "10900", "organization": "RS Promotion Public Co.,Ltd."}, "registrant": {"city": "BKK", "street": "419/2 Chetchottisak Building JatujakLadphoa Bangkok 10900", "country": "TH", "postalcode": "10900", "organization": "RS. Promotion PCL. ( \u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e2d\u0e32\u0e23\u0e4c.\u0e40\u0e2d\u0e2a.\u0e42\u0e1b\u0e23\u0e42\u0e21\u0e0a\u0e31\u0e48\u0e19 \u0e08\u0e33\u0e01\u0e31\u0e14 (\u0e21\u0e2b\u0e32\u0e0a\u0e19) )"}, "billing": null}, "nameservers": ["CLARINET.ASIANET.CO.TH", "CONDUCTOR.ASIANET.CO.TH"], "expiration_date": ["2017-03-17T00:00:00"], "creation_date": ["2007-01-19T00:00:00", "2007-01-19T00:00:00"], "raw": ["\nWhois Server Version 2.1.2\n\nDomain: RS.CO.TH\nRegistrar: T.H.NIC Co., Ltd.\nName Server: CLARINET.ASIANET.CO.TH\nName Server: CONDUCTOR.ASIANET.CO.TH\nStatus: ACTIVE\nUpdated date: 1 Feb 2012\nCreated date: 19 Jan 2007\nRenew date: 18 Mar 2012\nExp date: 17 Mar 2017\nDomain Holder: RS. Promotion PCL. ( \u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e2d\u0e32\u0e23\u0e4c.\u0e40\u0e2d\u0e2a.\u0e42\u0e1b\u0e23\u0e42\u0e21\u0e0a\u0e31\u0e48\u0e19 \u0e08\u0e33\u0e01\u0e31\u0e14 (\u0e21\u0e2b\u0e32\u0e0a\u0e19) )\n419/2 Chetchottisak Building JatujakLadphoa Bangkok 10900, BKK\n10900\nTH\n\nTech Contact: 37581\nRS Promotion Public Co.,Ltd.\n419/2 Chetchottisak Building JatujakLadphoa Bangkok 10900, bangkok\n10900\nTH\n\n\n\n>>> Last update of whois data: Fri, 27 Jun 2014 16:34:24 UTC+7 <<<\n\nFor more information please visit: https://www.thnic.co.th/whois\n\n\n"], "registrar": ["T.H.NIC Co., Ltd."]} \ No newline at end of file diff --git a/test/target_default/servequake.com b/test/target_default/servequake.com new file mode 100644 index 0000000..ac5c4b5 --- /dev/null +++ b/test/target_default/servequake.com @@ -0,0 +1 @@ +{"updated_date": ["2011-11-11T18:48:29"], "status": ["clientTransferProhibited"], "contacts": {"admin": {"city": "Reno", "name": "No-IP.com, Domain Operations", "state": "NV", "phone": "+1.7758531883", "street": "5905 South Virginia St\nSuite 200", "country": "US", "postalcode": "89502", "email": "domains@no-ip.com"}, "tech": {"city": "Reno", "name": "No-IP.com, Domain Operations", "state": "NV", "phone": "+1.7758531883", "street": "5905 South Virginia St\nSuite 200", "country": "US", "postalcode": "89502", "organization": "Vitalwerks Internet Solutions, LLC", "email": "domains@no-ip.com"}, "registrant": {"city": "Reno", "name": "No-IP.com, Domain Operations", "state": "NV", "phone": "+1.7758531883", "street": "5905 South Virginia St\nSuite 200", "country": "US", "postalcode": "89502", "organization": "Vitalwerks Internet Solutions, LLC", "email": "domains@no-ip.com"}, "billing": {"city": "Reno", "name": "No-IP.com, Domain Operations", "state": "NV", "phone": "+1.7758531883", "street": "5905 South Virginia St\nSuite 200", "country": "US", "postalcode": "89502", "organization": "Vitalwerks Internet Solutions, LLC", "email": "domains@no-ip.com"}}, "nameservers": ["NF1.NO-IP.COM", "NF2.NO-IP.COM", "NF3.NO-IP.COM", "NF4.NO-IP.COM"], "expiration_date": ["2015-02-10T05:33:35"], "creation_date": ["2004-11-12T08:00:00", "2004-11-12T08:00:00"], "raw": ["Whois Server Version 2.0\n\nNOTICE: Access to No-IP.com WHOIS information is provided to assist persons in \ndetermining the contents of a domain name registration record in the No-IP.com\nregistrar database. The data in this record is provided by No-IP.com\nfor informational purposes only, and No-Ip.com does not guarantee its \naccuracy. This service is intended only for query-based access. You agree \nthat you will use this data only for lawful purposes and that, under no \ncircumstances will you use this data to: (a) allow, enable, or otherwise \nsupport the transmission by e-mail, telephone, or facsimile of mass \nunsolicited, commercial advertising or solicitations to entities other than \nthe data recipient's own existing customers; or (b) enable high volume, \nautomated, electronic processes that send queries or data to the systems of \nRegistry Operator or any ICANN-Accredited Registrar, except as reasonably \nnecessary to register domain names or modify existing registrations. All \nrights reserved. Public Interest Registry reserves the right to modify these terms at any \ntime. By submitting this query, you agree to abide by this policy. \n\n\nDomain Name: SERVEQUAKE.COM\nCreated On: 12-Nov-2004 08:00:00 UTC\nLast Updated On: 11-Nov-2011 18:48:29 UTC\nExpiration Date: 10-Feb-2015 05:33:35 UTC\nSponsoring Registrar: Vitalwerks Internet Solutions, LLC / No-IP.com\nRegistrant Name: No-IP.com, Domain Operations\nRegistrant Organization: Vitalwerks Internet Solutions, LLC\nRegistrant Street1: 5905 South Virginia St\nRegistrant Street2: Suite 200\nRegistrant City: Reno\nRegistrant State/Province: NV\nRegistrant Postal Code: 89502\nRegistrant Country: US\nRegistrant Phone: +1.7758531883\nRegistrant FAX: \nRegistrant Email: domains@no-ip.com\n\nAdmin Name: No-IP.com, Domain Operations\nAdmin Street1: 5905 South Virginia St\nAdmin Street2: Suite 200\nAdmin City: Reno\nAdmin State/Province: NV\nAdmin Postal Code: 89502\nAdmin Country: US\nAdmin Phone: +1.7758531883\nAdmin FAX: \nAdmin Email: domains@no-ip.com\n\nTech Name: No-IP.com, Domain Operations\nTech Organization: Vitalwerks Internet Solutions, LLC\nTech Street1: 5905 South Virginia St\nTech Street2: Suite 200\nTech City: Reno\nTech State/Province: NV\nTech Postal Code: 89502\nTech Country: US\nTech Phone: +1.7758531883\nTech FAX: \nTech Email: domains@no-ip.com\n\nBilling Name: No-IP.com, Domain Operations\nBilling Organization: Vitalwerks Internet Solutions, LLC\nBilling Street1: 5905 South Virginia St\nBilling Street2: Suite 200\nBilling City: Reno\nBilling State/Province: NV\nBilling Postal Code: 89502\nBilling Country: US\nBilling Phone: +1.7758531883\nBilling FAX: \nBilling Email: domains@no-ip.com\n\nName Server: NF1.NO-IP.COM\nName Server: NF2.NO-IP.COM\nName Server: NF3.NO-IP.COM\nName Server: NF4.NO-IP.COM\n\n", " Domain Name: SERVEQUAKE.COM\n Registrar: VITALWERKS INTERNET SOLUTIONS LLC DBA NO-IP\n Whois Server: whois.no-ip.com\n Referral URL: http://www.no-ip.com\n Name Server: NF1.NO-IP.COM\n Name Server: NF2.NO-IP.COM\n Name Server: NF3.NO-IP.COM\n Name Server: NF4.NO-IP.COM\n Status: clientTransferProhibited\n Updated Date: 11-nov-2011\n Creation Date: 10-feb-2000\n Expiration Date: 10-feb-2015\n"], "whois_server": ["whois.no-ip.com"], "registrar": ["Vitalwerks Internet Solutions, LLC / No-IP.com"]} \ No newline at end of file diff --git a/test/target_default/siamparagon.co.th b/test/target_default/siamparagon.co.th new file mode 100644 index 0000000..1e2711f --- /dev/null +++ b/test/target_default/siamparagon.co.th @@ -0,0 +1 @@ +{"status": ["ACTIVE"], "updated_date": ["2013-04-12T00:00:00"], "contacts": {"admin": null, "tech": {"city": "\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e2f", "handle": "15190", "country": "TH", "street": "991 \u0e28\u0e39\u0e19\u0e22\u0e4c\u0e01\u0e32\u0e23\u0e04\u0e49\u0e32 \u0e2a\u0e22\u0e32\u0e21\u0e1e\u0e32\u0e23\u0e32\u0e01\u0e2d\u0e19 \u0e16.\u0e1e\u0e23\u0e30\u0e23\u0e32\u0e21 1 \u0e41\u0e02\u0e27\u0e07\u0e1b\u0e17\u0e38\u0e21\u0e27\u0e31\u0e19 \u0e40\u0e02\u0e15\u0e1b\u0e17\u0e38\u0e21\u0e27\u0e31\u0e19", "postalcode": "10330"}, "registrant": {"city": "BANGKOK", "street": "991 SIAM Paragon Shopping Center RAMA1 ROAD\nPATUMWAN", "country": "TH", "postalcode": "10330", "organization": "SIAM PARAGON DEVELOPMENT CO., LTD. (\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e2a\u0e22\u0e32\u0e21\u0e1e\u0e32\u0e23\u0e32\u0e01\u0e2d\u0e19 \u0e14\u0e35\u0e40\u0e27\u0e25\u0e25\u0e2d\u0e1b\u0e40\u0e21\u0e49\u0e19\u0e17\u0e4c \u0e08\u0e33\u0e01\u0e31\u0e14)"}, "billing": null}, "nameservers": ["NS.BEENETS.COM", "NS2.BEENETS.COM"], "expiration_date": ["2016-03-24T00:00:00"], "creation_date": ["2002-03-25T00:00:00", "2002-03-25T00:00:00"], "raw": ["\nWhois Server Version 2.1.2\n\nDomain: SIAMPARAGON.CO.TH\nRegistrar: T.H.NIC Co., Ltd.\nName Server: NS.BEENETS.COM\nName Server: NS2.BEENETS.COM\nStatus: ACTIVE\nUpdated date: 12 Apr 2013\nCreated date: 25 Mar 2002\nRenew date: 25 Mar 2013\nExp date: 24 Mar 2016\nDomain Holder: SIAM PARAGON DEVELOPMENT CO., LTD. (\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e2a\u0e22\u0e32\u0e21\u0e1e\u0e32\u0e23\u0e32\u0e01\u0e2d\u0e19 \u0e14\u0e35\u0e40\u0e27\u0e25\u0e25\u0e2d\u0e1b\u0e40\u0e21\u0e49\u0e19\u0e17\u0e4c \u0e08\u0e33\u0e01\u0e31\u0e14)\n991 SIAM Paragon Shopping Center RAMA1 ROAD, PATUMWAN, BANGKOK\n10330\nTH\n\nTech Contact: 15190\n991 \u0e28\u0e39\u0e19\u0e22\u0e4c\u0e01\u0e32\u0e23\u0e04\u0e49\u0e32 \u0e2a\u0e22\u0e32\u0e21\u0e1e\u0e32\u0e23\u0e32\u0e01\u0e2d\u0e19 \u0e16.\u0e1e\u0e23\u0e30\u0e23\u0e32\u0e21 1 \u0e41\u0e02\u0e27\u0e07\u0e1b\u0e17\u0e38\u0e21\u0e27\u0e31\u0e19 \u0e40\u0e02\u0e15\u0e1b\u0e17\u0e38\u0e21\u0e27\u0e31\u0e19 \u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e2f\n10330\nTH\n\n\n\n>>> Last update of whois data: Fri, 27 Jun 2014 16:32:46 UTC+7 <<<\n\nFor more information please visit: https://www.thnic.co.th/whois\n\n\n"], "registrar": ["T.H.NIC Co., Ltd."]} \ No newline at end of file diff --git a/test/target_default/starbucks.co.th b/test/target_default/starbucks.co.th new file mode 100644 index 0000000..8c0aa94 --- /dev/null +++ b/test/target_default/starbucks.co.th @@ -0,0 +1 @@ +{"status": ["ACTIVE"], "updated_date": ["2009-09-10T00:00:00"], "contacts": {"admin": null, "tech": {"city": "\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e2f", "handle": "24897", "district": "\u0e41\u0e02\u0e27\u0e07\u0e17\u0e38\u0e48\u0e07\u0e2a\u0e2d\u0e07\u0e2b\u0e49\u0e2d\u0e07 \u0e40\u0e02\u0e15\u0e2b\u0e25\u0e31\u0e01\u0e2a\u0e35\u0e48", "country": "TH", "street": "2/4 \u0e2d\u0e32\u0e04\u0e32\u0e23\u0e44\u0e17\u0e22\u0e1e\u0e32\u0e13\u0e34\u0e0a\u0e22\u0e4c\u0e2a\u0e32\u0e21\u0e31\u0e04\u0e04\u0e35\u0e1b\u0e23\u0e30\u0e01\u0e31\u0e19\u0e20\u0e31\u0e22 \u0e0a\u0e31\u0e49\u0e19 10 \u0e16\u0e19\u0e19\u0e27\u0e34\u0e20\u0e32\u0e27\u0e14\u0e35\u0e23\u0e31\u0e07\u0e2a\u0e34\u0e15", "postalcode": "10210", "organization": "\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e40\u0e04\u0e40\u0e2d\u0e2a\u0e0b\u0e35 \u0e04\u0e2d\u0e21\u0e40\u0e21\u0e2d\u0e23\u0e4c\u0e40\u0e0a\u0e35\u0e22\u0e25 \u0e2d\u0e34\u0e19\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e40\u0e19\u0e15 \u0e08\u0e33\u0e01\u0e31\u0e14"}, "registrant": {"city": "388 Sukhumvit Road", "district": "Klongtoey", "state": "Bangkok", "street": "12th floor,Exchange Tower", "country": "TH", "postalcode": "10110", "organization": "Starbucks Coffee ( Thailand ) Co., Ltd."}, "billing": null}, "nameservers": ["NS.KSC.CO.TH", "NS2.KSC.CO.TH"], "expiration_date": ["2014-12-16T00:00:00"], "creation_date": ["2003-06-17T00:00:00", "2003-06-17T00:00:00"], "raw": ["\nWhois Server Version 2.1.2\n\nDomain: STARBUCKS.CO.TH\nRegistrar: T.H.NIC Co., Ltd.\nName Server: NS.KSC.CO.TH\nName Server: NS2.KSC.CO.TH\nStatus: ACTIVE\nUpdated date: 10 Sep 2009\nCreated date: 17 Jun 2003\nRenew date: 17 Jun 2003\nExp date: 16 Dec 2014\nDomain Holder: Starbucks Coffee ( Thailand ) Co., Ltd.\n12th floor,Exchange Tower, 388 Sukhumvit Road, Klongtoey, Bangkok\n10110\nTH\n\nTech Contact: 24897\n\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e40\u0e04\u0e40\u0e2d\u0e2a\u0e0b\u0e35 \u0e04\u0e2d\u0e21\u0e40\u0e21\u0e2d\u0e23\u0e4c\u0e40\u0e0a\u0e35\u0e22\u0e25 \u0e2d\u0e34\u0e19\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e40\u0e19\u0e15 \u0e08\u0e33\u0e01\u0e31\u0e14\n2/4 \u0e2d\u0e32\u0e04\u0e32\u0e23\u0e44\u0e17\u0e22\u0e1e\u0e32\u0e13\u0e34\u0e0a\u0e22\u0e4c\u0e2a\u0e32\u0e21\u0e31\u0e04\u0e04\u0e35\u0e1b\u0e23\u0e30\u0e01\u0e31\u0e19\u0e20\u0e31\u0e22 \u0e0a\u0e31\u0e49\u0e19 10 \u0e16\u0e19\u0e19\u0e27\u0e34\u0e20\u0e32\u0e27\u0e14\u0e35\u0e23\u0e31\u0e07\u0e2a\u0e34\u0e15 \n\u0e41\u0e02\u0e27\u0e07\u0e17\u0e38\u0e48\u0e07\u0e2a\u0e2d\u0e07\u0e2b\u0e49\u0e2d\u0e07 \u0e40\u0e02\u0e15\u0e2b\u0e25\u0e31\u0e01\u0e2a\u0e35\u0e48 \u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e2f\n10210\nTH\n\n\n\n>>> Last update of whois data: Tue, 24 Jun 2014 04:58:54 UTC+7 <<<\n\nFor more information please visit: https://www.thnic.co.th/whois\n\n\n"], "registrar": ["T.H.NIC Co., Ltd."]} \ No newline at end of file diff --git a/test/target_default/tip.it b/test/target_default/tip.it new file mode 100644 index 0000000..51b7e11 --- /dev/null +++ b/test/target_default/tip.it @@ -0,0 +1 @@ +{"status": ["ok"], "updated_date": ["2013-10-16T00:43:15", "2012-04-27T15:13:45"], "contacts": {"admin": {"handle": "SF3221", "name": "Sandro Fanelli", "organization": "Sandro Fanelli"}, "tech": {"city": "Bergamo", "handle": "2409-REGT", "name": "Technical Support", "state": "BG", "street": "Via Zanchi 22", "country": "IT", "postalcode": "24126", "organization": "Register.it S.p.A.", "creationdate": "2009-09-28T11:01:09", "changedate": "2012-04-27T15:13:45"}, "registrant": {"handle": "SF3221", "name": "Sandro Fanelli", "organization": "Sandro Fanelli"}, "billing": null}, "nameservers": ["ns1.softlayer.com", "ns2.softlayer.com"], "expiration_date": ["2014-09-30T00:00:00"], "creation_date": ["1997-09-26T00:00:00", "2009-09-28T11:01:09"], "raw": ["\n*********************************************************************\n* Please note that the following result could be a subgroup of *\n* the data contained in the database. *\n* *\n* Additional information can be visualized at: *\n* http://www.nic.it/cgi-bin/Whois/whois.cgi *\n*********************************************************************\n\nDomain: tip.it\nStatus: ok\nCreated: 1997-09-26 00:00:00\nLast Update: 2013-10-16 00:43:15\nExpire Date: 2014-09-30\n\nRegistrant\n Name: Sandro Fanelli\n Organization: Sandro Fanelli\n ContactID: SF3221\n\nAdmin Contact\n Name: Sandro Fanelli\n Organization: Sandro Fanelli\n ContactID: SF3221\n\nTechnical Contacts\n Name: Technical Support\n Organization: Register.it S.p.A.\n ContactID: 2409-REGT\n Address: Via Zanchi 22\n Bergamo\n 24126\n BG\n IT\n Created: 2009-09-28 11:01:09\n Last Update: 2012-04-27 15:13:45\n\nRegistrar\n Organization: Register.it s.p.a.\n Name: REGISTER-REG\n\nNameservers\n ns1.softlayer.com\n ns2.softlayer.com\n\n\n"], "registrar": ["Register.it s.p.a."]} \ No newline at end of file diff --git a/test/target_default/toyota.co.th b/test/target_default/toyota.co.th new file mode 100644 index 0000000..1684b1d --- /dev/null +++ b/test/target_default/toyota.co.th @@ -0,0 +1 @@ +{"status": ["ACTIVE"], "updated_date": ["2014-01-20T00:00:00"], "contacts": {"admin": null, "tech": {"city": "Bang Bor", "handle": "92144", "state": "Samutprakarn", "street": "99 Moo 5\nBangna-Trad K.M. 29.5 Rd.\nBan-Ragad,", "country": "TH", "postalcode": "10560", "organization": "Toyota Motor Asia Pacific Engineering & Manufacturing Co.,Ltd."}, "registrant": {"city": "Samrong Tai", "district": "PhraPradaeng", "state": "Samut Prakan", "street": "186/1 Mu1 Old Railway Rd.", "country": "TH", "postalcode": "10130", "organization": "Toyota Motor Thailand Co., Ltd. ( \u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e42\u0e15\u0e42\u0e22\u0e15\u0e49\u0e32 \u0e21\u0e2d\u0e40\u0e15\u0e2d\u0e23\u0e4c \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22 \u0e08\u0e33\u0e01\u0e31\u0e14 )"}, "billing": null}, "nameservers": ["NS1.NTT.CO.TH", "NS1.TOYOTA.CO.TH", "NS2.TOYOTA.CO.TH"], "expiration_date": ["2015-01-16T00:00:00"], "creation_date": ["1999-01-17T00:00:00", "1999-01-17T00:00:00"], "raw": ["\nWhois Server Version 2.1.2\n\nDomain: TOYOTA.CO.TH\nRegistrar: T.H.NIC Co., Ltd.\nName Server: NS1.NTT.CO.TH\nName Server: NS1.TOYOTA.CO.TH\nName Server: NS2.TOYOTA.CO.TH\nStatus: ACTIVE\nUpdated date: 20 Jan 2014\nCreated date: 17 Jan 1999\nRenew date: 17 Jan 2014\nExp date: 16 Jan 2015\nDomain Holder: Toyota Motor Thailand Co., Ltd. ( \u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e42\u0e15\u0e42\u0e22\u0e15\u0e49\u0e32 \u0e21\u0e2d\u0e40\u0e15\u0e2d\u0e23\u0e4c \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22 \u0e08\u0e33\u0e01\u0e31\u0e14 )\n186/1 Mu1 Old Railway Rd., Samrong Tai, PhraPradaeng, Samut Prakan\n10130\nTH\n\nTech Contact: 92144\nToyota Motor Asia Pacific Engineering & Manufacturing Co.,Ltd.\n99 Moo 5, Bangna-Trad K.M. 29.5 Rd., Ban-Ragad, \nBang Bor, Samutprakarn\n10560\nTH\n\n\n\n>>> Last update of whois data: Fri, 27 Jun 2014 16:34:06 UTC+7 <<<\n\nFor more information please visit: https://www.thnic.co.th/whois\n\n\n"], "registrar": ["T.H.NIC Co., Ltd."]} \ No newline at end of file diff --git a/test/target_default/unwire.hk b/test/target_default/unwire.hk new file mode 100644 index 0000000..555e6f6 --- /dev/null +++ b/test/target_default/unwire.hk @@ -0,0 +1 @@ +{"status": ["Active", "Complete"], "contacts": {"admin": {"handle": "HK3507379T", "name": "AMAZING SHREK", "firstname": "AMAZING", "country": "HK", "phone": "+852-123456", "street": "HK", "lastname": "SHREK", "organization": "UNWIRE LIMITED", "email": "mkt@bmedia.hk"}, "tech": {"name": "CHEUNG", "country": "HK", "phone": "+852-123456", "street": "HK", "lastname": "CHEUNG", "organization": "UNWIRE LIMITED", "email": "mkt@bmedia.hk"}, "registrant": {"country": "HK", "street": "HK", "organization": "UNWIRE LIMITED", "email": "mkt@bmedia.hk"}, "billing": null}, "nameservers": ["NORM.NS.CLOUDFLARE.COM", "ZOE.NS.CLOUDFLARE.COM"], "expiration_date": ["2021-06-24T00:00:00"], "creation_date": ["2009-06-24T00:00:00", "2009-06-24T00:00:00"], "raw": [" \n -------------------------------------------------------------------------------\n Whois server by HKIRC\n -------------------------------------------------------------------------------\n .hk top level Domain names can be registered via HKIRC-Accredited Registrars. \n Go to https://www.hkirc.hk/content.jsp?id=280 for details. \n -------------------------------------------------------------------------------\n\n\n\nDomain Name: UNWIRE.HK \n\nDomain Status: Active \n\nContract Version: HKDNR latest version \n\nRegistrar Name: Hong Kong Domain Name Registration Company Limited\n\nRegistrar Contact Information: Email: enquiry@hkdnr.hk Hotline: +852 2319 1313 \n\nReseller: \n\n\n\n\nRegistrant Contact Information:\n\nCompany English Name (It should be the same as the registered/corporation name on your Business Register Certificate or relevant documents): UNWIRE LIMITED\nCompany Chinese name: \nAddress: HK \nCountry: HK\nEmail: mkt@bmedia.hk \nDomain Name Commencement Date: 24-06-2009\nExpiry Date: 24-06-2021 \nRe-registration Status: Complete \n\n\n\nAdministrative Contact Information:\n\nGiven name: AMAZING \nFamily name: SHREK \nCompany name: UNWIRE LIMITED\nAddress: HK \nCountry: HK\nPhone: +852-123456\nFax: \nEmail: mkt@bmedia.hk\nAccount Name: HK3507379T\n\n\n\n\nTechnical Contact Information:\n\nFamily name: CHEUNG \nCompany name: UNWIRE LIMITED\nAddress: HK \nCountry: HK\nPhone: +852-123456\nFax: \nEmail: mkt@bmedia.hk\n\n\n\n\nName Servers Information:\n\nNORM.NS.CLOUDFLARE.COM\nZOE.NS.CLOUDFLARE.COM\n\n\n\nStatus Information:\n\nDomain Prohibit Status: \n\n\n\n -------------------------------------------------------------------------------\n The Registry contains ONLY .com.hk, .net.hk, .edu.hk, .org.hk,\n .gov.hk, idv.hk. and .hk $domains.\n -------------------------------------------------------------------------------\n\nWHOIS Terms of Use \nBy using this WHOIS search enquiry service you agree to these terms of use.\nThe data in HKDNR's WHOIS search engine is for information purposes only and HKDNR does not guarantee the accuracy of the data. The data is provided to assist people to obtain information about the registration record of domain names registered by HKDNR. You agree to use the data for lawful purposes only.\n\nYou are not authorised to use high-volume, electronic or automated processes to access, query or harvest data from this WHOIS search enquiry service.\n\nYou agree that you will not and will not allow anyone else to:\n\na. use the data for mass unsolicited commercial advertising of any sort via any medium including telephone, email or fax; or\n\nb. enable high volume, automated or electronic processes that apply to HKDNR or its computer systems including the WHOIS search enquiry service; or\n\nc. without the prior written consent of HKDNR compile, repackage, disseminate, disclose to any third party or use the data for a purpose other than obtaining information about a domain name registration record; or\n\nd. use such data to derive an economic benefit for yourself.\n\nHKDNR in its sole discretion may terminate your access to the WHOIS search enquiry service (including, without limitation, blocking your IP address) at any time including, without limitation, for excessive use of the WHOIS search enquiry service.\n\nHKDNR may modify these terms of use at any time by publishing the modified terms of use on its website.\n\n\n\n\n\n\n\n"], "registrar": ["Hong Kong Domain Name Registration Company Limited"], "emails": ["enquiry@hkdnr.hk"]} \ 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/whoiser.ir b/test/target_default/whoiser.ir new file mode 100644 index 0000000..ce75211 --- /dev/null +++ b/test/target_default/whoiser.ir @@ -0,0 +1 @@ +{"updated_date": ["2014-06-01T00:00:00"], "contacts": {"admin": {"handle": "mj205-irnic", "phone": "+982623554491", "street": "Andishe\nFaz 3\nMahale 23 St.\nShahed St.\nBaharan St.\nNo. 12,", "city": "Shahraiar", "name": "Mohsen Jadidi", "country": "IR", "state": "Tehran", "email": "mnjadidi@gmail.com"}, "tech": {"handle": "mj205-irnic", "phone": "+982623554491", "street": "Andishe\nFaz 3\nMahale 23 St.\nShahed St.\nBaharan St.\nNo. 12,", "city": "Shahraiar", "name": "Mohsen Jadidi", "country": "IR", "state": "Tehran", "email": "mnjadidi@gmail.com"}, "registrant": {"handle": "mj205-irnic", "phone": "+982623554491", "street": "Andishe\nFaz 3\nMahale 23 St.\nShahed St.\nBaharan St.\nNo. 12,", "city": "Shahraiar", "name": "Mohsen Jadidi", "country": "IR", "state": "Tehran", "email": "mnjadidi@gmail.com"}, "billing": null}, "nameservers": ["ns1.webmasir.com", "ns2.webmasir.com"], "expiration_date": ["2017-03-03T00:00:00"], "raw": ["% This is the IRNIC Whois server v1.6.2.\n% Available on web at http://whois.nic.ir/\n% Find the terms and conditions of use on http://www.nic.ir/\n% \n% This server uses UTF-8 as the encoding for requests and responses.\n\n% NOTE: This output has been filtered.\n\n% Information related to 'whoiser.ir'\n\n\ndomain:\t\twhoiser.ir\nascii:\t\twhoiser.ir\nremarks:\t(Domain Holder) Mohsen Jadidi\nremarks:\t(Domain Holder Address) Andishe, Faz 3, Mahale 23 St., Shahed St., Baharan St., No. 12,, Shahraiar, Tehran, IR\nholder-c:\tmj205-irnic\nadmin-c:\tmj205-irnic\ntech-c:\t\tmj205-irnic\nnserver:\tns1.webmasir.com\nnserver:\tns2.webmasir.com\nlast-updated:\t2014-06-01\nexpire-date:\t2017-03-03\nsource:\t\tIRNIC # Filtered\n\nnic-hdl:\tmj205-irnic\nperson:\t\tMohsen Jadidi\ne-mail:\t\tmnjadidi@gmail.com\naddress:\tAndishe, Faz 3, Mahale 23 St., Shahed St., Baharan St., No. 12,, Shahraiar, Tehran, IR\nphone:\t\t+982623554491\nsource:\t\tIRNIC # Filtered\n\n\n"]} \ 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_default/yahoo.it b/test/target_default/yahoo.it new file mode 100644 index 0000000..bdda209 --- /dev/null +++ b/test/target_default/yahoo.it @@ -0,0 +1 @@ +{"status": ["ok"], "updated_date": ["2013-12-06T00:48:58", "2012-11-02T07:30:15", "2012-11-02T07:30:16"], "contacts": {"admin": {"city": "Milano", "handle": "DUP975799853", "name": "Martini Massimo Ernesto Aldo", "state": "MI", "street": "via Spadolini 7", "country": "IT", "postalcode": "20141", "creationdate": "2012-11-02T07:30:15", "changedate": "2012-11-02T07:30:15"}, "tech": {"city": "Sunnyvale", "handle": "DUP285050789", "name": "Yahoo Inc", "state": "CALIFORNIA", "street": "Domain Administrator\n701 First Avenue", "country": "US", "postalcode": "94089", "creationdate": "2012-11-02T07:30:16", "changedate": "2012-11-02T07:30:16"}, "registrant": {"city": "Milano", "handle": "DUP211874838", "name": "Yahoo! Italia S.r.l.", "state": "MI", "street": "via Spadolini 7", "country": "IT", "postalcode": "20141", "organization": "Yahoo! Italia S.r.l.", "creationdate": "2012-11-02T07:30:15", "changedate": "2012-11-02T07:30:15"}, "billing": null}, "nameservers": ["ns1.yahoo.com", "ns5.yahoo.com", "ns7.yahoo.com", "ns2.yahoo.com", "ns3.yahoo.com"], "expiration_date": ["2014-11-20T00:00:00"], "creation_date": ["1998-05-11T00:00:00", "2012-11-02T07:30:15", "2012-11-02T07:30:16"], "raw": ["\n*********************************************************************\n* Please note that the following result could be a subgroup of *\n* the data contained in the database. *\n* *\n* Additional information can be visualized at: *\n* http://www.nic.it/cgi-bin/Whois/whois.cgi *\n*********************************************************************\n\nDomain: yahoo.it\nStatus: ok\nCreated: 1998-05-11 00:00:00\nLast Update: 2013-12-06 00:48:58\nExpire Date: 2014-11-20\n\nRegistrant\n Name: Yahoo! Italia S.r.l.\n Organization: Yahoo! Italia S.r.l.\n ContactID: DUP211874838\n Address: via Spadolini 7\n Milano\n 20141\n MI\n IT\n Created: 2012-11-02 07:30:15\n Last Update: 2012-11-02 07:30:15\n\nAdmin Contact\n Name: Martini Massimo Ernesto Aldo\n ContactID: DUP975799853\n Address: via Spadolini 7\n Milano\n 20141\n MI\n IT\n Created: 2012-11-02 07:30:15\n Last Update: 2012-11-02 07:30:15\n\nTechnical Contacts\n Name: Yahoo Inc\n ContactID: DUP285050789\n Address: Domain Administrator\n 701 First Avenue\n Sunnyvale\n 94089\n CALIFORNIA\n US\n Created: 2012-11-02 07:30:16\n Last Update: 2012-11-02 07:30:16\n\nRegistrar\n Organization: MarkMonitor International Limited\n Name: MARKMONITOR-REG\n Web: https://www.markmonitor.com/\n\nNameservers\n ns1.yahoo.com\n ns5.yahoo.com\n ns7.yahoo.com\n ns2.yahoo.com\n ns3.yahoo.com\n\n\n"], "registrar": ["MarkMonitor International Limited"]} \ No newline at end of file diff --git a/test/target_normalized/asiahotel.co.th b/test/target_normalized/asiahotel.co.th new file mode 100644 index 0000000..3ad8288 --- /dev/null +++ b/test/target_normalized/asiahotel.co.th @@ -0,0 +1 @@ +{"status": ["Active"], "updated_date": ["2013-12-25T00:00:00"], "contacts": {"admin": null, "tech": {"city": "Bangkok", "handle": "85476", "street": "296 Phayathai Road Ratchathewi", "country": "TH", "postalcode": "10400", "organization": "Asia Hotel Public Co.,Ltd."}, "registrant": {"city": "Bangkok", "street": "296 Phayathai Road Ratchathewi", "country": "TH", "postalcode": "10400", "organization": "Asia Hotel Public Co., Ltd. ( \u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e40\u0e2d\u0e40\u0e0a\u0e35\u0e22\u0e42\u0e2e\u0e40\u0e15\u0e47\u0e25 \u0e08\u0e33\u0e01\u0e31\u0e14 (\u0e21\u0e2b\u0e32\u0e0a\u0e19) )"}, "billing": null}, "nameservers": ["ns1.asiahotel.co.th", "ns2.asiahotel.co.th"], "expiration_date": ["2017-01-16T00:00:00"], "creation_date": ["1999-01-17T00:00:00", "1999-01-17T00:00:00"], "raw": ["\nWhois Server Version 2.1.2\n\nDomain: ASIAHOTEL.CO.TH\nRegistrar: T.H.NIC Co., Ltd.\nName Server: NS1.ASIAHOTEL.CO.TH\nName Server: NS2.ASIAHOTEL.CO.TH\nStatus: ACTIVE\nUpdated date: 25 Dec 2013\nCreated date: 17 Jan 1999\nRenew date: 17 Jan 2014\nExp date: 16 Jan 2017\nDomain Holder: Asia Hotel Public Co., Ltd. ( \u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e40\u0e2d\u0e40\u0e0a\u0e35\u0e22\u0e42\u0e2e\u0e40\u0e15\u0e47\u0e25 \u0e08\u0e33\u0e01\u0e31\u0e14 (\u0e21\u0e2b\u0e32\u0e0a\u0e19) )\n296 Phayathai Road Ratchathewi, Bangkok\n10400\nTH\n\nTech Contact: 85476\nAsia Hotel Public Co.,Ltd.\n296 Phayathai Road Ratchathewi, Bangkok\n10400\nTH\n\n\n\n>>> Last update of whois data: Fri, 27 Jun 2014 14:54:30 UTC+7 <<<\n\nFor more information please visit: https://www.thnic.co.th/whois\n\n\n"], "registrar": ["T.H.NIC Co., Ltd."]} \ No newline at end of file diff --git a/test/target_normalized/bts.co.th b/test/target_normalized/bts.co.th new file mode 100644 index 0000000..93c52a8 --- /dev/null +++ b/test/target_normalized/bts.co.th @@ -0,0 +1 @@ +{"status": ["Active"], "updated_date": ["2009-07-18T00:00:00"], "contacts": {"admin": null, "tech": {"city": "Bangkok", "handle": "74252", "street": "304 Suapha Rd.\nPomprab\nPomprab Suttruphai", "country": "TH", "postalcode": "10110", "organization": "Loxley Information Services Co., Ltd."}, "registrant": {"city": "Bangkok", "street": "BTS Building\nPhaholyothin Rd.,Lardpao\nChatujak", "country": "TH", "postalcode": "10900", "organization": "Bangkok Mass Transit System Public Company Limited (\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e23\u0e30\u0e1a\u0e1a\u0e02\u0e19\u0e2a\u0e48\u0e07\u0e21\u0e27\u0e25\u0e0a\u0e19\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e \u0e08\u0e33\u0e01\u0e31\u0e14 (\u0e21\u0e2b\u0e32\u0e0a\u0e19))"}, "billing": null}, "nameservers": ["ns.loxinfo.co.th", "ns.tnet.co.th"], "expiration_date": ["2021-08-03T00:00:00"], "creation_date": ["1999-08-04T00:00:00", "1999-08-04T00:00:00"], "raw": ["\nWhois Server Version 2.1.2\n\nDomain: BTS.CO.TH\nRegistrar: T.H.NIC Co., Ltd.\nName Server: NS.LOXINFO.CO.TH\nName Server: NS.TNET.CO.TH\nStatus: ACTIVE\nUpdated date: 18 Jul 2009\nCreated date: 4 Aug 1999\nRenew date: 4 Aug 1999\nExp date: 3 Aug 2021\nDomain Holder: Bangkok Mass Transit System Public Company Limited (\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e23\u0e30\u0e1a\u0e1a\u0e02\u0e19\u0e2a\u0e48\u0e07\u0e21\u0e27\u0e25\u0e0a\u0e19\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e \u0e08\u0e33\u0e01\u0e31\u0e14 (\u0e21\u0e2b\u0e32\u0e0a\u0e19))\nBTS Building, Phaholyothin Rd.,Lardpao, Chatujak, Bangkok\n10900\nTH\n\nTech Contact: 74252\nLoxley Information Services Co., Ltd.\n304 Suapha Rd., Pomprab, Pomprab Suttruphai, Bangkok\n10110\nTH\n\n\n\n>>> Last update of whois data: Fri, 27 Jun 2014 16:32:41 UTC+7 <<<\n\nFor more information please visit: https://www.thnic.co.th/whois\n\n\n"], "registrar": ["T.H.NIC Co., Ltd."]} \ 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/expopack.com.mx b/test/target_normalized/expopack.com.mx new file mode 100644 index 0000000..8395ae5 --- /dev/null +++ b/test/target_normalized/expopack.com.mx @@ -0,0 +1 @@ +{"updated_date": ["2011-04-09T00:00:00"], "contacts": {"admin": {"city": "Ciudad de Mexico", "state": "Distrito Federal", "name": "Alejandra Aguirre", "country": "Mexico"}, "tech": {"city": "Ciudad de Mexico", "state": "Distrito Federal", "name": "Alejandra Aguirre", "country": "Mexico"}, "registrant": {"city": "Mexico", "state": "Distrito Federal", "name": "Expo Pak S.A. DE C.V.", "country": "Mexico"}, "billing": {"city": "Ciudad de Mexico", "state": "Distrito Federal", "name": "Alejandra Aguirre", "country": "Mexico"}}, "nameservers": ["ns1.nuestrosite.com", "ns2.nuestrosite.com"], "expiration_date": ["2015-10-06T00:00:00"], "creation_date": ["1999-10-07T00:00:00", "1999-10-07T00:00:00"], "raw": ["\nDomain Name: expopack.com.mx\n\nCreated On: 1999-10-07\nExpiration Date: 2015-10-06\nLast Updated On: 2011-04-09\nRegistrar: Akky (Una division de NIC Mexico)\nURL: http://www.akky.mx\nWhois TCP URI: whois.akky.mx\nWhois Web URL: http://www.akky.mx/jsf/whois/whois.jsf\n\nRegistrant:\n Name: EXPO PAK S.A. DE C.V.\n City: Mexico\n State: Distrito Federal\n Country: Mexico\n\nAdministrative Contact:\n Name: Alejandra Aguirre\n City: Ciudad de Mexico\n State: Distrito Federal\n Country: Mexico\n\nTechnical Contact:\n Name: Alejandra Aguirre\n City: Ciudad de Mexico\n State: Distrito Federal\n Country: Mexico\n\nBilling Contact:\n Name: Alejandra Aguirre\n City: Ciudad de Mexico\n State: Distrito Federal\n Country: Mexico\n\nName Servers:\n DNS: ns1.nuestrosite.com \n DNS: ns2.nuestrosite.com \n\n\n% NOTICE: The expiration date displayed in this record is the date the\n% registrar's sponsorship of the domain name registration in the registry is\n% currently set to expire. This date does not necessarily reflect the\n% expiration date of the domain name registrant's agreement with the sponsoring\n% registrar. Users may consult the sponsoring registrar's Whois database to\n% view the registrar's reported date of expiration for this registration.\n\n% The requested information (\"Information\") is provided only for the delegation\n% of domain names and the operation of the DNS administered by NIC Mexico.\n\n% It is absolutely prohibited to use the Information for other purposes, \n% including sending not requested emails for advertising or promoting products\n% and services purposes (SPAM) without the authorization of the owners of the\n% Information and NIC Mexico.\n\n% The database generated from the delegation system is protected by the\n% intellectual property laws and all international treaties on the matter.\n\n% If you need more information on the records displayed here, please contact us\n% by email at ayuda@nic.mx .\n\n% If you want notify the receipt of SPAM or unauthorized access, please send a\n% email to abuse@nic.mx .\n\n% NOTA: La fecha de expiracion mostrada en esta consulta es la fecha que el\n% registrar tiene contratada para el nombre de dominio en el registry. Esta\n% fecha no necesariamente refleja la fecha de expiracion del nombre de dominio\n% que el registrante tiene contratada con el registrar. Puede consultar la base\n% de datos de Whois del registrar para ver la fecha de expiracion reportada por\n% el registrar para este nombre de dominio.\n\n% La informacion que ha solicitado se provee exclusivamente para fines\n% relacionados con la delegacion de nombres de dominio y la operacion del DNS\n% administrado por NIC Mexico.\n\n% Queda absolutamente prohibido su uso para otros propositos, incluyendo el\n% envio de Correos Electronicos no solicitados con fines publicitarios o de\n% promocion de productos y servicios (SPAM) sin mediar la autorizacion de los\n% afectados y de NIC Mexico.\n\n% La base de datos generada a partir del sistema de delegacion, esta protegida\n% por las leyes de Propiedad Intelectual y todos los tratados internacionales\n% sobre la materia.\n\n% Si necesita mayor informacion sobre los registros aqui mostrados, favor de\n% comunicarse a ayuda@nic.mx.\n\n% Si desea notificar sobre correo no solicitado o accesos no autorizados, favor\n% de enviar su mensaje a abuse@nic.mx.\n\n\n"], "registrar": ["Akky (Una division de NIC Mexico)"], "emails": ["ayuda@nic.mx", "abuse@nic.mx"]} \ No newline at end of file diff --git a/test/target_normalized/google.co.jp b/test/target_normalized/google.co.jp new file mode 100644 index 0000000..27488c9 --- /dev/null +++ b/test/target_normalized/google.co.jp @@ -0,0 +1 @@ +{"status": ["Connected (2015/03/31)"], "updated_date": ["2014-04-01T01:18:23"], "contacts": {"admin": {"handle": "DL152JP"}, "tech": {"handle": "TW124137JP"}, "registrant": {"organization": "Google Japan"}, "billing": null}, "nameservers": ["ns1.google.com", "ns2.google.com", "ns3.google.com", "ns4.google.com"], "creation_date": ["2001-03-22T00:00:00"], "raw": ["[ JPRS database provides information on network administration. Its use is ]\n[ restricted to network administration purposes. For further information, ]\n[ use 'whois -h whois.jprs.jp help'. To suppress Japanese output, add'/e' ]\n[ at the end of command, e.g. 'whois -h whois.jprs.jp xxx/e'. ]\n[ ]\n[ Notice -------------------------------------------------------------------- ]\n[ JPRS will change JPRS WHOIS (web-based and port 43 Whois service) about the ]\n[ following two points on January 18, 2015. ]\n[ ]\n[ 1) Change of the format of response about gTLD domain name ]\n[ 2) Change of the character encoding ]\n[ ]\n[ For further information, please see the following webpage. ]\n[ http://jprs.jp/whatsnew/notice/2014/20140319-whois.html (only in Japanese) ]\n[ --------------------------------------------------------------------------- ]\n\nDomain Information:\na. [Domain Name] GOOGLE.CO.JP\ng. [Organization] Google Japan\nl. [Organization Type] corporation\nm. [Administrative Contact] DL152JP\nn. [Technical Contact] TW124137JP\np. [Name Server] ns1.google.com\np. [Name Server] ns2.google.com\np. [Name Server] ns3.google.com\np. [Name Server] ns4.google.com\ns. [Signing Key] \n[State] Connected (2015/03/31)\n[Registered Date] 2001/03/22\n[Connected Date] 2001/03/22\n[Last Update] 2014/04/01 01:18:23 (JST)\n\n\n"]} \ No newline at end of file diff --git a/test/target_normalized/google.co.th b/test/target_normalized/google.co.th new file mode 100644 index 0000000..1ea808d --- /dev/null +++ b/test/target_normalized/google.co.th @@ -0,0 +1 @@ +{"status": ["Active"], "updated_date": ["2014-06-19T00:00:00"], "contacts": {"admin": null, "tech": {"city": "Boise", "handle": "491182", "state": "ID", "street": "391 N. Ancestor PL", "country": "US", "postalcode": "83704", "organization": "Markmonitor"}, "registrant": {"city": "Mountain View", "state": "CA", "street": "1600 Amphitheatre Parkway", "country": "US", "postalcode": "94043", "organization": "Google Inc."}, "billing": null}, "nameservers": ["ns1.google.com", "ns2.google.com", "ns3.google.com", "ns4.google.com"], "expiration_date": ["2014-10-07T00:00:00"], "creation_date": ["2004-10-08T00:00:00", "2004-10-08T00:00:00"], "raw": ["\nWhois Server Version 2.1.2\n\nDomain: GOOGLE.CO.TH\nRegistrar: T.H.NIC Co., Ltd.\nName Server: NS1.GOOGLE.COM\nName Server: NS2.GOOGLE.COM\nName Server: NS3.GOOGLE.COM\nName Server: NS4.GOOGLE.COM\nStatus: ACTIVE\nUpdated date: 19 Jun 2014\nCreated date: 8 Oct 2004\nRenew date: 8 Oct 2013\nExp date: 7 Oct 2014\nDomain Holder: Google Inc.\n1600 Amphitheatre Parkway\nMountain View, CA 94043\n94043\nUS\n\nTech Contact: 491182\nMarkmonitor\n391 N. Ancestor PL \nBoise ID\n83704\nUS\n\n\n\n>>> Last update of whois data: Fri, 27 Jun 2014 15:46:58 UTC+7 <<<\n\nFor more information please visit: https://www.thnic.co.th/whois\n\n\n"], "registrar": ["T.H.NIC Co., Ltd."]} \ 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/google.it b/test/target_normalized/google.it new file mode 100644 index 0000000..ef712df --- /dev/null +++ b/test/target_normalized/google.it @@ -0,0 +1 @@ +{"status": ["ok"], "updated_date": ["2014-05-07T00:52:45", "2013-04-21T01:05:35"], "contacts": {"admin": {"city": "Dublin", "handle": "DUP142437129", "name": "Tsao Tu", "state": "IE", "street": "70 Sir John Rogersons Quay", "country": "IE", "postalcode": "2", "organization": "Tu Tsao", "creationdate": "2013-04-21T01:05:35", "changedate": "2013-04-21T01:05:35"}, "tech": {"city": "Dublin", "handle": "DUP430692088", "name": "Google Ireland Holdings", "state": "IE", "street": "70 Sir John Rogersons Quay", "country": "IE", "postalcode": "2", "organization": "Google Ireland Holdings", "creationdate": "2013-04-21T01:05:35", "changedate": "2013-04-21T01:05:35"}, "registrant": {"city": "Dublin", "handle": "DUP430692088", "name": "Google Ireland Holdings", "state": "IE", "street": "70 Sir John Rogersons Quay", "country": "IE", "postalcode": "2", "organization": "Google Ireland Holdings", "creationdate": "2013-04-21T01:05:35", "changedate": "2013-04-21T01:05:35"}, "billing": null}, "nameservers": ["ns1.google.com", "ns4.google.com", "ns2.google.com", "ns3.google.com"], "expiration_date": ["2015-04-21T00:00:00"], "creation_date": ["1999-12-10T00:00:00", "2013-04-21T01:05:35"], "raw": ["\n*********************************************************************\n* Please note that the following result could be a subgroup of *\n* the data contained in the database. *\n* *\n* Additional information can be visualized at: *\n* http://www.nic.it/cgi-bin/Whois/whois.cgi *\n*********************************************************************\n\nDomain: google.it\nStatus: ok\nCreated: 1999-12-10 00:00:00\nLast Update: 2014-05-07 00:52:45\nExpire Date: 2015-04-21\n\nRegistrant\n Name: Google Ireland Holdings\n Organization: Google Ireland Holdings\n ContactID: DUP430692088\n Address: 70 Sir John Rogersons Quay\n Dublin\n 2\n IE\n IE\n Created: 2013-04-21 01:05:35\n Last Update: 2013-04-21 01:05:35\n\nAdmin Contact\n Name: Tsao Tu\n Organization: Tu Tsao\n ContactID: DUP142437129\n Address: 70 Sir John Rogersons Quay\n Dublin\n 2\n IE\n IE\n Created: 2013-04-21 01:05:35\n Last Update: 2013-04-21 01:05:35\n\nTechnical Contacts\n Name: Google Ireland Holdings\n Organization: Google Ireland Holdings\n ContactID: DUP430692088\n Address: 70 Sir John Rogersons Quay\n Dublin\n 2\n IE\n IE\n Created: 2013-04-21 01:05:35\n Last Update: 2013-04-21 01:05:35\n\nRegistrar\n Organization: MarkMonitor International Limited\n Name: MARKMONITOR-REG\n Web: https://www.markmonitor.com/\n\nNameservers\n ns1.google.com\n ns4.google.com\n ns2.google.com\n ns3.google.com\n\n\n"], "registrar": ["MarkMonitor International Limited"]} \ No newline at end of file diff --git a/test/target_normalized/nic.ir b/test/target_normalized/nic.ir new file mode 100644 index 0000000..0710ddf --- /dev/null +++ b/test/target_normalized/nic.ir @@ -0,0 +1 @@ +{"updated_date": ["2010-05-09T00:00:00"], "contacts": {"admin": {"fax": "+98 21 2229 5700", "handle": "ir00-irnic", "phone": "+98 21 2229 0306", "street": "Shahid Bahonar (Niavaran) Sq.", "city": "Tehran", "country": "IR", "state": "Tehran", "organization": "Dot-IR (.ir) ccTLD Registry, Institute for Studies in Theoretical Physics and Mathematics (IPM)", "email": "info@nic.ir"}, "tech": {"handle": "as51-irnic", "name": "Alireza Saleh", "email": "arsaleh@gmail.com"}, "registrant": {"fax": "+98 21 2229 5700", "handle": "ir00-irnic", "phone": "+98 21 2229 0306", "street": "Shahid Bahonar (Niavaran) Sq.", "city": "Tehran", "country": "IR", "state": "Tehran", "organization": "Dot-IR (.ir) ccTLD Registry, Institute for Studies in Theoretical Physics and Mathematics (IPM)", "email": "info@nic.ir"}, "billing": null}, "nameservers": ["ns1.nic.ir", "ns.nic.ir", "ns5.univie.ac.at", "auth51.ns.uu.net"], "expiration_date": ["2015-05-26T00:00:00"], "raw": ["% This is the IRNIC Whois server v1.6.2.\n% Available on web at http://whois.nic.ir/\n% Find the terms and conditions of use on http://www.nic.ir/\n% \n% This server uses UTF-8 as the encoding for requests and responses.\n\n% NOTE: This output has been filtered.\n\n% Information related to 'nic.ir'\n\n\ndomain:\t\tnic.ir\nascii:\t\tnic.ir\nremarks:\t(Domain Holder) Dot-IR (.ir) ccTLD Registry, Institute for Studies in Theoretical Physics and Mathematics (IPM)\nremarks:\t(Domain Holder Address) Shahid Bahonar (Niavaran) Sq., Tehran, Tehran, IR\nholder-c:\tir00-irnic\nadmin-c:\tir00-irnic\ntech-c:\t\tas51-irnic\nnserver:\tns1.nic.ir\nnserver:\tns.nic.ir\nnserver:\tns5.univie.ac.at\nnserver:\tauth51.ns.uu.net\nlast-updated:\t2010-05-09\nexpire-date:\t2015-05-26\nsource:\t\tIRNIC # Filtered\n\nnic-hdl:\tir00-irnic\norg:\t\tDot-IR (.ir) ccTLD Registry, Institute for Studies in Theoretical Physics and Mathematics (IPM)\ne-mail:\t\tinfo@nic.ir\naddress:\tShahid Bahonar (Niavaran) Sq., Tehran, Tehran, IR\nphone:\t\t+98 21 2229 0306\nfax-no:\t\t+98 21 2229 5700\nsource:\t\tIRNIC # Filtered\n\nnic-hdl:\tas51-irnic\nperson:\t\tAlireza Saleh\ne-mail:\t\tarsaleh@gmail.com\nsource:\t\tIRNIC # Filtered\n\ndomain:\t\tnic.ir\nascii:\t\tnic.ir\nremarks:\tThis domain is only available for registration under certain conditions\nsource:\t\tIRNIC # Filtered\n\n\n"]} \ No newline at end of file diff --git a/test/target_normalized/nttpc.co.jp b/test/target_normalized/nttpc.co.jp new file mode 100644 index 0000000..b0a20a7 --- /dev/null +++ b/test/target_normalized/nttpc.co.jp @@ -0,0 +1 @@ +{"status": ["Connected (2015/03/31)"], "updated_date": ["2014-04-01T01:10:41"], "nameservers": ["ns1.sphere.ad.jp", "ns2.sphere.ad.jp"], "contacts": {"admin": {"handle": "TY4708JP"}, "tech": {"handle": "YA6489JP"}, "registrant": {"organization": "NTT PC Communications Incorporated"}, "billing": null}, "raw": ["[ JPRS database provides information on network administration. Its use is ]\n[ restricted to network administration purposes. For further information, ]\n[ use 'whois -h whois.jprs.jp help'. To suppress Japanese output, add'/e' ]\n[ at the end of command, e.g. 'whois -h whois.jprs.jp xxx/e'. ]\n[ ]\n[ Notice -------------------------------------------------------------------- ]\n[ JPRS will change JPRS WHOIS (web-based and port 43 Whois service) about the ]\n[ following two points on January 18, 2015. ]\n[ ]\n[ 1) Change of the format of response about gTLD domain name ]\n[ 2) Change of the character encoding ]\n[ ]\n[ For further information, please see the following webpage. ]\n[ http://jprs.jp/whatsnew/notice/2014/20140319-whois.html (only in Japanese) ]\n[ --------------------------------------------------------------------------- ]\n\nDomain Information:\na. [Domain Name] NTTPC.CO.JP\ng. [Organization] NTT PC Communications Incorporated\nl. [Organization Type] Corporation\nm. [Administrative Contact] TY4708JP\nn. [Technical Contact] YA6489JP\np. [Name Server] ns1.sphere.ad.jp\np. [Name Server] ns2.sphere.ad.jp\ns. [Signing Key] \n[State] Connected (2015/03/31)\n[Registered Date] \n[Connected Date] \n[Last Update] 2014/04/01 01:10:41 (JST)\n\n\n"]} \ 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/redd.it b/test/target_normalized/redd.it new file mode 100644 index 0000000..21f4123 --- /dev/null +++ b/test/target_normalized/redd.it @@ -0,0 +1 @@ +{"status": ["ok"], "updated_date": ["2013-09-22T00:52:31", "2013-09-22T00:44:16"], "contacts": {"admin": {"handle": "C4195-GANDI-EQUL", "name": "Gandi Corporate", "organization": "Gandi Corporate"}, "tech": {"handle": "R3511-GANDI-HIRR", "name": "Domain Administrator", "organization": "Reddit Inc"}, "registrant": {"city": "Paris", "handle": "DUP181111842", "name": "Corporation Service Company France", "state": "Paris", "street": "68, rue du faubourg Saint Honore", "country": "FR", "postalcode": "75008", "organization": "Corporation Service Company France", "creationdate": "2013-09-22T00:44:16", "changedate": "2013-09-22T00:44:16"}, "billing": null}, "nameservers": ["c.dns.gandi.net", "a.dns.gandi.net", "b.dns.gandi.net"], "expiration_date": ["2014-09-22T00:00:00"], "creation_date": ["2010-05-31T09:49:27", "2013-09-22T00:44:16"], "raw": ["\n*********************************************************************\n* Please note that the following result could be a subgroup of *\n* the data contained in the database. *\n* *\n* Additional information can be visualized at: *\n* http://www.nic.it/cgi-bin/Whois/whois.cgi *\n*********************************************************************\n\nDomain: redd.it\nStatus: ok\nCreated: 2010-05-31 09:49:27\nLast Update: 2013-09-22 00:52:31\nExpire Date: 2014-09-22\n\nRegistrant\n Name: Corporation Service Company France\n Organization: Corporation Service Company France\n ContactID: DUP181111842\n Address: 68, rue du faubourg Saint Honore\n Paris\n 75008\n Paris\n FR\n Created: 2013-09-22 00:44:16\n Last Update: 2013-09-22 00:44:16\n\nAdmin Contact\n Name: GANDI CORPORATE\n Organization: GANDI CORPORATE\n ContactID: C4195-GANDI-EQUL\n\nTechnical Contacts\n Name: Domain Administrator\n Organization: Reddit Inc\n ContactID: R3511-GANDI-HIRR\n\nRegistrar\n Organization: Gandi SAS\n Name: GANDI-REG\n Web: http://www.gandi.net\n\nNameservers\n c.dns.gandi.net\n a.dns.gandi.net\n b.dns.gandi.net\n\n\n"], "registrar": ["Gandi SAS"]} \ No newline at end of file diff --git a/test/target_normalized/ricoh.co.th b/test/target_normalized/ricoh.co.th new file mode 100644 index 0000000..32ee757 --- /dev/null +++ b/test/target_normalized/ricoh.co.th @@ -0,0 +1 @@ +{"status": ["Active"], "updated_date": ["2013-08-05T00:00:00"], "contacts": {"admin": null, "tech": {"city": "\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e21\u0e2b\u0e32\u0e19\u0e04\u0e23", "handle": "503400", "country": "TH", "street": "341 \u0e16\u0e19\u0e19\u0e2d\u0e48\u0e2d\u0e19\u0e19\u0e38\u0e0a\n\u0e41\u0e02\u0e27\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e27\u0e28 \u0e40\u0e02\u0e15\u0e1b\u0e23\u0e30\u0e40\u0e27\u0e28", "postalcode": "10250", "organization": "\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e23\u0e34\u0e42\u0e01\u0e49(\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22)\u0e08\u0e33\u0e01\u0e31\u0e14"}, "registrant": {"city": "Bangkok", "district": "Prawet", "country": "TH", "street": "Ricoh (Thailand) Ltd.\n341 Onnuj Road", "postalcode": "10250", "organization": "Ricoh (thailand) co., LTD. (\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e23\u0e34\u0e42\u0e01\u0e49 (\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22) \u0e08\u0e33\u0e01\u0e31\u0e14)"}, "billing": null}, "nameservers": ["ns.cscoms.com", "ns2.cscoms.com"], "expiration_date": ["2014-11-04T00:00:00"], "creation_date": ["1999-11-05T00:00:00", "1999-11-05T00:00:00"], "raw": ["\nWhois Server Version 2.1.2\n\nDomain: RICOH.CO.TH\nRegistrar: T.H.NIC Co., Ltd.\nName Server: NS.CSCOMS.COM\nName Server: NS2.CSCOMS.COM\nStatus: ACTIVE\nUpdated date: 5 Aug 2013\nCreated date: 5 Nov 1999\nRenew date: 5 Nov 2012\nExp date: 4 Nov 2014\nDomain Holder: RICOH (THAILAND) CO., LTD. (\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e23\u0e34\u0e42\u0e01\u0e49 (\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22) \u0e08\u0e33\u0e01\u0e31\u0e14)\nRicoh (Thailand) Ltd.\n341 Onnuj Road, \nPrawet, Prawet , \nBangkok\n10250\nTH\n\nTech Contact: 503400\n\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e23\u0e34\u0e42\u0e01\u0e49(\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22)\u0e08\u0e33\u0e01\u0e31\u0e14\n341 \u0e16\u0e19\u0e19\u0e2d\u0e48\u0e2d\u0e19\u0e19\u0e38\u0e0a \n\u0e41\u0e02\u0e27\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e27\u0e28 \u0e40\u0e02\u0e15\u0e1b\u0e23\u0e30\u0e40\u0e27\u0e28\n\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e21\u0e2b\u0e32\u0e19\u0e04\u0e23\n10250\nTH\n\n\n\n>>> Last update of whois data: Fri, 27 Jun 2014 16:34:18 UTC+7 <<<\n\nFor more information please visit: https://www.thnic.co.th/whois\n\n\n"], "registrar": ["T.H.NIC Co., Ltd."]} \ No newline at end of file diff --git a/test/target_normalized/rs.co.th b/test/target_normalized/rs.co.th new file mode 100644 index 0000000..fa0974e --- /dev/null +++ b/test/target_normalized/rs.co.th @@ -0,0 +1 @@ +{"status": ["Active"], "updated_date": ["2012-02-01T00:00:00"], "contacts": {"admin": null, "tech": {"city": "Bangkok", "handle": "37581", "street": "419/2 Chetchottisak Building JatujakLadphoa Bangkok 10900", "country": "TH", "postalcode": "10900", "organization": "RS Promotion Public Co.,Ltd."}, "registrant": {"city": "Bkk", "street": "419/2 Chetchottisak Building JatujakLadphoa Bangkok 10900", "country": "TH", "postalcode": "10900", "organization": "RS. Promotion PCL. ( \u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e2d\u0e32\u0e23\u0e4c.\u0e40\u0e2d\u0e2a.\u0e42\u0e1b\u0e23\u0e42\u0e21\u0e0a\u0e31\u0e48\u0e19 \u0e08\u0e33\u0e01\u0e31\u0e14 (\u0e21\u0e2b\u0e32\u0e0a\u0e19) )"}, "billing": null}, "nameservers": ["clarinet.asianet.co.th", "conductor.asianet.co.th"], "expiration_date": ["2017-03-17T00:00:00"], "creation_date": ["2007-01-19T00:00:00", "2007-01-19T00:00:00"], "raw": ["\nWhois Server Version 2.1.2\n\nDomain: RS.CO.TH\nRegistrar: T.H.NIC Co., Ltd.\nName Server: CLARINET.ASIANET.CO.TH\nName Server: CONDUCTOR.ASIANET.CO.TH\nStatus: ACTIVE\nUpdated date: 1 Feb 2012\nCreated date: 19 Jan 2007\nRenew date: 18 Mar 2012\nExp date: 17 Mar 2017\nDomain Holder: RS. Promotion PCL. ( \u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e2d\u0e32\u0e23\u0e4c.\u0e40\u0e2d\u0e2a.\u0e42\u0e1b\u0e23\u0e42\u0e21\u0e0a\u0e31\u0e48\u0e19 \u0e08\u0e33\u0e01\u0e31\u0e14 (\u0e21\u0e2b\u0e32\u0e0a\u0e19) )\n419/2 Chetchottisak Building JatujakLadphoa Bangkok 10900, BKK\n10900\nTH\n\nTech Contact: 37581\nRS Promotion Public Co.,Ltd.\n419/2 Chetchottisak Building JatujakLadphoa Bangkok 10900, bangkok\n10900\nTH\n\n\n\n>>> Last update of whois data: Fri, 27 Jun 2014 16:34:24 UTC+7 <<<\n\nFor more information please visit: https://www.thnic.co.th/whois\n\n\n"], "registrar": ["T.H.NIC Co., Ltd."]} \ No newline at end of file diff --git a/test/target_normalized/servequake.com b/test/target_normalized/servequake.com new file mode 100644 index 0000000..2c523b0 --- /dev/null +++ b/test/target_normalized/servequake.com @@ -0,0 +1 @@ +{"updated_date": ["2011-11-11T18:48:29"], "status": ["clientTransferProhibited"], "contacts": {"admin": {"city": "Reno", "name": "No-IP.com, Domain Operations", "state": "NV", "phone": "+1.7758531883", "street": "5905 South Virginia St\nSuite 200", "country": "US", "postalcode": "89502", "email": "domains@no-ip.com"}, "tech": {"city": "Reno", "name": "No-IP.com, Domain Operations", "state": "NV", "phone": "+1.7758531883", "street": "5905 South Virginia St\nSuite 200", "country": "US", "postalcode": "89502", "organization": "Vitalwerks Internet Solutions, LLC", "email": "domains@no-ip.com"}, "registrant": {"city": "Reno", "name": "No-IP.com, Domain Operations", "state": "NV", "phone": "+1.7758531883", "street": "5905 South Virginia St\nSuite 200", "country": "US", "postalcode": "89502", "organization": "Vitalwerks Internet Solutions, LLC", "email": "domains@no-ip.com"}, "billing": {"city": "Reno", "name": "No-IP.com, Domain Operations", "state": "NV", "phone": "+1.7758531883", "street": "5905 South Virginia St\nSuite 200", "country": "US", "postalcode": "89502", "organization": "Vitalwerks Internet Solutions, LLC", "email": "domains@no-ip.com"}}, "nameservers": ["nf1.no-ip.com", "nf2.no-ip.com", "nf3.no-ip.com", "nf4.no-ip.com"], "expiration_date": ["2015-02-10T05:33:35"], "creation_date": ["2004-11-12T08:00:00", "2004-11-12T08:00:00"], "raw": ["Whois Server Version 2.0\n\nNOTICE: Access to No-IP.com WHOIS information is provided to assist persons in \ndetermining the contents of a domain name registration record in the No-IP.com\nregistrar database. The data in this record is provided by No-IP.com\nfor informational purposes only, and No-Ip.com does not guarantee its \naccuracy. This service is intended only for query-based access. You agree \nthat you will use this data only for lawful purposes and that, under no \ncircumstances will you use this data to: (a) allow, enable, or otherwise \nsupport the transmission by e-mail, telephone, or facsimile of mass \nunsolicited, commercial advertising or solicitations to entities other than \nthe data recipient's own existing customers; or (b) enable high volume, \nautomated, electronic processes that send queries or data to the systems of \nRegistry Operator or any ICANN-Accredited Registrar, except as reasonably \nnecessary to register domain names or modify existing registrations. All \nrights reserved. Public Interest Registry reserves the right to modify these terms at any \ntime. By submitting this query, you agree to abide by this policy. \n\n\nDomain Name: SERVEQUAKE.COM\nCreated On: 12-Nov-2004 08:00:00 UTC\nLast Updated On: 11-Nov-2011 18:48:29 UTC\nExpiration Date: 10-Feb-2015 05:33:35 UTC\nSponsoring Registrar: Vitalwerks Internet Solutions, LLC / No-IP.com\nRegistrant Name: No-IP.com, Domain Operations\nRegistrant Organization: Vitalwerks Internet Solutions, LLC\nRegistrant Street1: 5905 South Virginia St\nRegistrant Street2: Suite 200\nRegistrant City: Reno\nRegistrant State/Province: NV\nRegistrant Postal Code: 89502\nRegistrant Country: US\nRegistrant Phone: +1.7758531883\nRegistrant FAX: \nRegistrant Email: domains@no-ip.com\n\nAdmin Name: No-IP.com, Domain Operations\nAdmin Street1: 5905 South Virginia St\nAdmin Street2: Suite 200\nAdmin City: Reno\nAdmin State/Province: NV\nAdmin Postal Code: 89502\nAdmin Country: US\nAdmin Phone: +1.7758531883\nAdmin FAX: \nAdmin Email: domains@no-ip.com\n\nTech Name: No-IP.com, Domain Operations\nTech Organization: Vitalwerks Internet Solutions, LLC\nTech Street1: 5905 South Virginia St\nTech Street2: Suite 200\nTech City: Reno\nTech State/Province: NV\nTech Postal Code: 89502\nTech Country: US\nTech Phone: +1.7758531883\nTech FAX: \nTech Email: domains@no-ip.com\n\nBilling Name: No-IP.com, Domain Operations\nBilling Organization: Vitalwerks Internet Solutions, LLC\nBilling Street1: 5905 South Virginia St\nBilling Street2: Suite 200\nBilling City: Reno\nBilling State/Province: NV\nBilling Postal Code: 89502\nBilling Country: US\nBilling Phone: +1.7758531883\nBilling FAX: \nBilling Email: domains@no-ip.com\n\nName Server: NF1.NO-IP.COM\nName Server: NF2.NO-IP.COM\nName Server: NF3.NO-IP.COM\nName Server: NF4.NO-IP.COM\n\n", " Domain Name: SERVEQUAKE.COM\n Registrar: VITALWERKS INTERNET SOLUTIONS LLC DBA NO-IP\n Whois Server: whois.no-ip.com\n Referral URL: http://www.no-ip.com\n Name Server: NF1.NO-IP.COM\n Name Server: NF2.NO-IP.COM\n Name Server: NF3.NO-IP.COM\n Name Server: NF4.NO-IP.COM\n Status: clientTransferProhibited\n Updated Date: 11-nov-2011\n Creation Date: 10-feb-2000\n Expiration Date: 10-feb-2015\n"], "whois_server": ["whois.no-ip.com"], "registrar": ["Vitalwerks Internet Solutions, LLC / No-IP.com"]} \ No newline at end of file diff --git a/test/target_normalized/siamparagon.co.th b/test/target_normalized/siamparagon.co.th new file mode 100644 index 0000000..2c0da95 --- /dev/null +++ b/test/target_normalized/siamparagon.co.th @@ -0,0 +1 @@ +{"status": ["Active"], "updated_date": ["2013-04-12T00:00:00"], "contacts": {"admin": null, "tech": {"city": "\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e2f", "handle": "15190", "country": "TH", "street": "991 \u0e28\u0e39\u0e19\u0e22\u0e4c\u0e01\u0e32\u0e23\u0e04\u0e49\u0e32 \u0e2a\u0e22\u0e32\u0e21\u0e1e\u0e32\u0e23\u0e32\u0e01\u0e2d\u0e19 \u0e16.\u0e1e\u0e23\u0e30\u0e23\u0e32\u0e21 1 \u0e41\u0e02\u0e27\u0e07\u0e1b\u0e17\u0e38\u0e21\u0e27\u0e31\u0e19 \u0e40\u0e02\u0e15\u0e1b\u0e17\u0e38\u0e21\u0e27\u0e31\u0e19", "postalcode": "10330"}, "registrant": {"city": "Bangkok", "street": "991 SIAM Paragon Shopping Center RAMA1 ROAD\nPatumwan", "country": "TH", "postalcode": "10330", "organization": "Siam Paragon Development co., LTD. (\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e2a\u0e22\u0e32\u0e21\u0e1e\u0e32\u0e23\u0e32\u0e01\u0e2d\u0e19 \u0e14\u0e35\u0e40\u0e27\u0e25\u0e25\u0e2d\u0e1b\u0e40\u0e21\u0e49\u0e19\u0e17\u0e4c \u0e08\u0e33\u0e01\u0e31\u0e14)"}, "billing": null}, "nameservers": ["ns.beenets.com", "ns2.beenets.com"], "expiration_date": ["2016-03-24T00:00:00"], "creation_date": ["2002-03-25T00:00:00", "2002-03-25T00:00:00"], "raw": ["\nWhois Server Version 2.1.2\n\nDomain: SIAMPARAGON.CO.TH\nRegistrar: T.H.NIC Co., Ltd.\nName Server: NS.BEENETS.COM\nName Server: NS2.BEENETS.COM\nStatus: ACTIVE\nUpdated date: 12 Apr 2013\nCreated date: 25 Mar 2002\nRenew date: 25 Mar 2013\nExp date: 24 Mar 2016\nDomain Holder: SIAM PARAGON DEVELOPMENT CO., LTD. (\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e2a\u0e22\u0e32\u0e21\u0e1e\u0e32\u0e23\u0e32\u0e01\u0e2d\u0e19 \u0e14\u0e35\u0e40\u0e27\u0e25\u0e25\u0e2d\u0e1b\u0e40\u0e21\u0e49\u0e19\u0e17\u0e4c \u0e08\u0e33\u0e01\u0e31\u0e14)\n991 SIAM Paragon Shopping Center RAMA1 ROAD, PATUMWAN, BANGKOK\n10330\nTH\n\nTech Contact: 15190\n991 \u0e28\u0e39\u0e19\u0e22\u0e4c\u0e01\u0e32\u0e23\u0e04\u0e49\u0e32 \u0e2a\u0e22\u0e32\u0e21\u0e1e\u0e32\u0e23\u0e32\u0e01\u0e2d\u0e19 \u0e16.\u0e1e\u0e23\u0e30\u0e23\u0e32\u0e21 1 \u0e41\u0e02\u0e27\u0e07\u0e1b\u0e17\u0e38\u0e21\u0e27\u0e31\u0e19 \u0e40\u0e02\u0e15\u0e1b\u0e17\u0e38\u0e21\u0e27\u0e31\u0e19 \u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e2f\n10330\nTH\n\n\n\n>>> Last update of whois data: Fri, 27 Jun 2014 16:32:46 UTC+7 <<<\n\nFor more information please visit: https://www.thnic.co.th/whois\n\n\n"], "registrar": ["T.H.NIC Co., Ltd."]} \ No newline at end of file diff --git a/test/target_normalized/starbucks.co.th b/test/target_normalized/starbucks.co.th new file mode 100644 index 0000000..51d65b9 --- /dev/null +++ b/test/target_normalized/starbucks.co.th @@ -0,0 +1 @@ +{"status": ["Active"], "updated_date": ["2009-09-10T00:00:00"], "contacts": {"admin": null, "tech": {"city": "\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e2f", "handle": "24897", "district": "\u0e41\u0e02\u0e27\u0e07\u0e17\u0e38\u0e48\u0e07\u0e2a\u0e2d\u0e07\u0e2b\u0e49\u0e2d\u0e07 \u0e40\u0e02\u0e15\u0e2b\u0e25\u0e31\u0e01\u0e2a\u0e35\u0e48", "country": "TH", "street": "2/4 \u0e2d\u0e32\u0e04\u0e32\u0e23\u0e44\u0e17\u0e22\u0e1e\u0e32\u0e13\u0e34\u0e0a\u0e22\u0e4c\u0e2a\u0e32\u0e21\u0e31\u0e04\u0e04\u0e35\u0e1b\u0e23\u0e30\u0e01\u0e31\u0e19\u0e20\u0e31\u0e22 \u0e0a\u0e31\u0e49\u0e19 10 \u0e16\u0e19\u0e19\u0e27\u0e34\u0e20\u0e32\u0e27\u0e14\u0e35\u0e23\u0e31\u0e07\u0e2a\u0e34\u0e15", "postalcode": "10210", "organization": "\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e40\u0e04\u0e40\u0e2d\u0e2a\u0e0b\u0e35 \u0e04\u0e2d\u0e21\u0e40\u0e21\u0e2d\u0e23\u0e4c\u0e40\u0e0a\u0e35\u0e22\u0e25 \u0e2d\u0e34\u0e19\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e40\u0e19\u0e15 \u0e08\u0e33\u0e01\u0e31\u0e14"}, "registrant": {"city": "388 Sukhumvit Road", "district": "Klongtoey", "state": "Bangkok", "street": "12th floor,Exchange Tower", "country": "TH", "postalcode": "10110", "organization": "Starbucks Coffee ( Thailand ) Co., Ltd."}, "billing": null}, "nameservers": ["ns.ksc.co.th", "ns2.ksc.co.th"], "expiration_date": ["2014-12-16T00:00:00"], "creation_date": ["2003-06-17T00:00:00", "2003-06-17T00:00:00"], "raw": ["\nWhois Server Version 2.1.2\n\nDomain: STARBUCKS.CO.TH\nRegistrar: T.H.NIC Co., Ltd.\nName Server: NS.KSC.CO.TH\nName Server: NS2.KSC.CO.TH\nStatus: ACTIVE\nUpdated date: 10 Sep 2009\nCreated date: 17 Jun 2003\nRenew date: 17 Jun 2003\nExp date: 16 Dec 2014\nDomain Holder: Starbucks Coffee ( Thailand ) Co., Ltd.\n12th floor,Exchange Tower, 388 Sukhumvit Road, Klongtoey, Bangkok\n10110\nTH\n\nTech Contact: 24897\n\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e40\u0e04\u0e40\u0e2d\u0e2a\u0e0b\u0e35 \u0e04\u0e2d\u0e21\u0e40\u0e21\u0e2d\u0e23\u0e4c\u0e40\u0e0a\u0e35\u0e22\u0e25 \u0e2d\u0e34\u0e19\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e40\u0e19\u0e15 \u0e08\u0e33\u0e01\u0e31\u0e14\n2/4 \u0e2d\u0e32\u0e04\u0e32\u0e23\u0e44\u0e17\u0e22\u0e1e\u0e32\u0e13\u0e34\u0e0a\u0e22\u0e4c\u0e2a\u0e32\u0e21\u0e31\u0e04\u0e04\u0e35\u0e1b\u0e23\u0e30\u0e01\u0e31\u0e19\u0e20\u0e31\u0e22 \u0e0a\u0e31\u0e49\u0e19 10 \u0e16\u0e19\u0e19\u0e27\u0e34\u0e20\u0e32\u0e27\u0e14\u0e35\u0e23\u0e31\u0e07\u0e2a\u0e34\u0e15 \n\u0e41\u0e02\u0e27\u0e07\u0e17\u0e38\u0e48\u0e07\u0e2a\u0e2d\u0e07\u0e2b\u0e49\u0e2d\u0e07 \u0e40\u0e02\u0e15\u0e2b\u0e25\u0e31\u0e01\u0e2a\u0e35\u0e48 \u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e2f\n10210\nTH\n\n\n\n>>> Last update of whois data: Tue, 24 Jun 2014 04:58:54 UTC+7 <<<\n\nFor more information please visit: https://www.thnic.co.th/whois\n\n\n"], "registrar": ["T.H.NIC Co., Ltd."]} \ No newline at end of file diff --git a/test/target_normalized/tip.it b/test/target_normalized/tip.it new file mode 100644 index 0000000..51b7e11 --- /dev/null +++ b/test/target_normalized/tip.it @@ -0,0 +1 @@ +{"status": ["ok"], "updated_date": ["2013-10-16T00:43:15", "2012-04-27T15:13:45"], "contacts": {"admin": {"handle": "SF3221", "name": "Sandro Fanelli", "organization": "Sandro Fanelli"}, "tech": {"city": "Bergamo", "handle": "2409-REGT", "name": "Technical Support", "state": "BG", "street": "Via Zanchi 22", "country": "IT", "postalcode": "24126", "organization": "Register.it S.p.A.", "creationdate": "2009-09-28T11:01:09", "changedate": "2012-04-27T15:13:45"}, "registrant": {"handle": "SF3221", "name": "Sandro Fanelli", "organization": "Sandro Fanelli"}, "billing": null}, "nameservers": ["ns1.softlayer.com", "ns2.softlayer.com"], "expiration_date": ["2014-09-30T00:00:00"], "creation_date": ["1997-09-26T00:00:00", "2009-09-28T11:01:09"], "raw": ["\n*********************************************************************\n* Please note that the following result could be a subgroup of *\n* the data contained in the database. *\n* *\n* Additional information can be visualized at: *\n* http://www.nic.it/cgi-bin/Whois/whois.cgi *\n*********************************************************************\n\nDomain: tip.it\nStatus: ok\nCreated: 1997-09-26 00:00:00\nLast Update: 2013-10-16 00:43:15\nExpire Date: 2014-09-30\n\nRegistrant\n Name: Sandro Fanelli\n Organization: Sandro Fanelli\n ContactID: SF3221\n\nAdmin Contact\n Name: Sandro Fanelli\n Organization: Sandro Fanelli\n ContactID: SF3221\n\nTechnical Contacts\n Name: Technical Support\n Organization: Register.it S.p.A.\n ContactID: 2409-REGT\n Address: Via Zanchi 22\n Bergamo\n 24126\n BG\n IT\n Created: 2009-09-28 11:01:09\n Last Update: 2012-04-27 15:13:45\n\nRegistrar\n Organization: Register.it s.p.a.\n Name: REGISTER-REG\n\nNameservers\n ns1.softlayer.com\n ns2.softlayer.com\n\n\n"], "registrar": ["Register.it s.p.a."]} \ No newline at end of file diff --git a/test/target_normalized/toyota.co.th b/test/target_normalized/toyota.co.th new file mode 100644 index 0000000..b7ddba1 --- /dev/null +++ b/test/target_normalized/toyota.co.th @@ -0,0 +1 @@ +{"status": ["Active"], "updated_date": ["2014-01-20T00:00:00"], "contacts": {"admin": null, "tech": {"city": "Bang Bor", "handle": "92144", "state": "Samutprakarn", "street": "99 Moo 5\nBangna-Trad K.M. 29.5 Rd.\nBan-Ragad", "country": "TH", "postalcode": "10560", "organization": "Toyota Motor Asia Pacific Engineering & Manufacturing Co.,Ltd."}, "registrant": {"city": "Samrong Tai", "district": "PhraPradaeng", "state": "Samut Prakan", "street": "186/1 Mu1 Old Railway Rd.", "country": "TH", "postalcode": "10130", "organization": "Toyota Motor Thailand Co., Ltd. ( \u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e42\u0e15\u0e42\u0e22\u0e15\u0e49\u0e32 \u0e21\u0e2d\u0e40\u0e15\u0e2d\u0e23\u0e4c \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22 \u0e08\u0e33\u0e01\u0e31\u0e14 )"}, "billing": null}, "nameservers": ["ns1.ntt.co.th", "ns1.toyota.co.th", "ns2.toyota.co.th"], "expiration_date": ["2015-01-16T00:00:00"], "creation_date": ["1999-01-17T00:00:00", "1999-01-17T00:00:00"], "raw": ["\nWhois Server Version 2.1.2\n\nDomain: TOYOTA.CO.TH\nRegistrar: T.H.NIC Co., Ltd.\nName Server: NS1.NTT.CO.TH\nName Server: NS1.TOYOTA.CO.TH\nName Server: NS2.TOYOTA.CO.TH\nStatus: ACTIVE\nUpdated date: 20 Jan 2014\nCreated date: 17 Jan 1999\nRenew date: 17 Jan 2014\nExp date: 16 Jan 2015\nDomain Holder: Toyota Motor Thailand Co., Ltd. ( \u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17 \u0e42\u0e15\u0e42\u0e22\u0e15\u0e49\u0e32 \u0e21\u0e2d\u0e40\u0e15\u0e2d\u0e23\u0e4c \u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22 \u0e08\u0e33\u0e01\u0e31\u0e14 )\n186/1 Mu1 Old Railway Rd., Samrong Tai, PhraPradaeng, Samut Prakan\n10130\nTH\n\nTech Contact: 92144\nToyota Motor Asia Pacific Engineering & Manufacturing Co.,Ltd.\n99 Moo 5, Bangna-Trad K.M. 29.5 Rd., Ban-Ragad, \nBang Bor, Samutprakarn\n10560\nTH\n\n\n\n>>> Last update of whois data: Fri, 27 Jun 2014 16:34:06 UTC+7 <<<\n\nFor more information please visit: https://www.thnic.co.th/whois\n\n\n"], "registrar": ["T.H.NIC Co., Ltd."]} \ No newline at end of file diff --git a/test/target_normalized/unwire.hk b/test/target_normalized/unwire.hk new file mode 100644 index 0000000..bc3604a --- /dev/null +++ b/test/target_normalized/unwire.hk @@ -0,0 +1 @@ +{"status": ["Active", "Complete"], "contacts": {"admin": {"handle": "HK3507379T", "name": "Amazing Shrek", "firstname": "AMAZING", "country": "HK", "phone": "+852-123456", "street": "HK", "lastname": "SHREK", "organization": "Unwire Limited", "email": "mkt@bmedia.hk"}, "tech": {"name": "CHEUNG", "country": "HK", "phone": "+852-123456", "street": "HK", "lastname": "CHEUNG", "organization": "Unwire Limited", "email": "mkt@bmedia.hk"}, "registrant": {"country": "HK", "street": "HK", "organization": "Unwire Limited", "email": "mkt@bmedia.hk"}, "billing": null}, "nameservers": ["norm.ns.cloudflare.com", "zoe.ns.cloudflare.com"], "expiration_date": ["2021-06-24T00:00:00"], "creation_date": ["2009-06-24T00:00:00", "2009-06-24T00:00:00"], "raw": [" \n -------------------------------------------------------------------------------\n Whois server by HKIRC\n -------------------------------------------------------------------------------\n .hk top level Domain names can be registered via HKIRC-Accredited Registrars. \n Go to https://www.hkirc.hk/content.jsp?id=280 for details. \n -------------------------------------------------------------------------------\n\n\n\nDomain Name: UNWIRE.HK \n\nDomain Status: Active \n\nContract Version: HKDNR latest version \n\nRegistrar Name: Hong Kong Domain Name Registration Company Limited\n\nRegistrar Contact Information: Email: enquiry@hkdnr.hk Hotline: +852 2319 1313 \n\nReseller: \n\n\n\n\nRegistrant Contact Information:\n\nCompany English Name (It should be the same as the registered/corporation name on your Business Register Certificate or relevant documents): UNWIRE LIMITED\nCompany Chinese name: \nAddress: HK \nCountry: HK\nEmail: mkt@bmedia.hk \nDomain Name Commencement Date: 24-06-2009\nExpiry Date: 24-06-2021 \nRe-registration Status: Complete \n\n\n\nAdministrative Contact Information:\n\nGiven name: AMAZING \nFamily name: SHREK \nCompany name: UNWIRE LIMITED\nAddress: HK \nCountry: HK\nPhone: +852-123456\nFax: \nEmail: mkt@bmedia.hk\nAccount Name: HK3507379T\n\n\n\n\nTechnical Contact Information:\n\nFamily name: CHEUNG \nCompany name: UNWIRE LIMITED\nAddress: HK \nCountry: HK\nPhone: +852-123456\nFax: \nEmail: mkt@bmedia.hk\n\n\n\n\nName Servers Information:\n\nNORM.NS.CLOUDFLARE.COM\nZOE.NS.CLOUDFLARE.COM\n\n\n\nStatus Information:\n\nDomain Prohibit Status: \n\n\n\n -------------------------------------------------------------------------------\n The Registry contains ONLY .com.hk, .net.hk, .edu.hk, .org.hk,\n .gov.hk, idv.hk. and .hk $domains.\n -------------------------------------------------------------------------------\n\nWHOIS Terms of Use \nBy using this WHOIS search enquiry service you agree to these terms of use.\nThe data in HKDNR's WHOIS search engine is for information purposes only and HKDNR does not guarantee the accuracy of the data. The data is provided to assist people to obtain information about the registration record of domain names registered by HKDNR. You agree to use the data for lawful purposes only.\n\nYou are not authorised to use high-volume, electronic or automated processes to access, query or harvest data from this WHOIS search enquiry service.\n\nYou agree that you will not and will not allow anyone else to:\n\na. use the data for mass unsolicited commercial advertising of any sort via any medium including telephone, email or fax; or\n\nb. enable high volume, automated or electronic processes that apply to HKDNR or its computer systems including the WHOIS search enquiry service; or\n\nc. without the prior written consent of HKDNR compile, repackage, disseminate, disclose to any third party or use the data for a purpose other than obtaining information about a domain name registration record; or\n\nd. use such data to derive an economic benefit for yourself.\n\nHKDNR in its sole discretion may terminate your access to the WHOIS search enquiry service (including, without limitation, blocking your IP address) at any time including, without limitation, for excessive use of the WHOIS search enquiry service.\n\nHKDNR may modify these terms of use at any time by publishing the modified terms of use on its website.\n\n\n\n\n\n\n\n"], "registrar": ["Hong Kong Domain Name Registration Company Limited"], "emails": ["enquiry@hkdnr.hk"]} \ 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/whoiser.ir b/test/target_normalized/whoiser.ir new file mode 100644 index 0000000..25eb1e0 --- /dev/null +++ b/test/target_normalized/whoiser.ir @@ -0,0 +1 @@ +{"updated_date": ["2014-06-01T00:00:00"], "contacts": {"admin": {"handle": "mj205-irnic", "phone": "+982623554491", "street": "Andishe\nFaz 3\nMahale 23 St.\nShahed St.\nBaharan St.\nNo. 12", "city": "Shahraiar", "name": "Mohsen Jadidi", "country": "IR", "state": "Tehran", "email": "mnjadidi@gmail.com"}, "tech": {"handle": "mj205-irnic", "phone": "+982623554491", "street": "Andishe\nFaz 3\nMahale 23 St.\nShahed St.\nBaharan St.\nNo. 12", "city": "Shahraiar", "name": "Mohsen Jadidi", "country": "IR", "state": "Tehran", "email": "mnjadidi@gmail.com"}, "registrant": {"handle": "mj205-irnic", "phone": "+982623554491", "street": "Andishe\nFaz 3\nMahale 23 St.\nShahed St.\nBaharan St.\nNo. 12", "city": "Shahraiar", "name": "Mohsen Jadidi", "country": "IR", "state": "Tehran", "email": "mnjadidi@gmail.com"}, "billing": null}, "nameservers": ["ns1.webmasir.com", "ns2.webmasir.com"], "expiration_date": ["2017-03-03T00:00:00"], "raw": ["% This is the IRNIC Whois server v1.6.2.\n% Available on web at http://whois.nic.ir/\n% Find the terms and conditions of use on http://www.nic.ir/\n% \n% This server uses UTF-8 as the encoding for requests and responses.\n\n% NOTE: This output has been filtered.\n\n% Information related to 'whoiser.ir'\n\n\ndomain:\t\twhoiser.ir\nascii:\t\twhoiser.ir\nremarks:\t(Domain Holder) Mohsen Jadidi\nremarks:\t(Domain Holder Address) Andishe, Faz 3, Mahale 23 St., Shahed St., Baharan St., No. 12,, Shahraiar, Tehran, IR\nholder-c:\tmj205-irnic\nadmin-c:\tmj205-irnic\ntech-c:\t\tmj205-irnic\nnserver:\tns1.webmasir.com\nnserver:\tns2.webmasir.com\nlast-updated:\t2014-06-01\nexpire-date:\t2017-03-03\nsource:\t\tIRNIC # Filtered\n\nnic-hdl:\tmj205-irnic\nperson:\t\tMohsen Jadidi\ne-mail:\t\tmnjadidi@gmail.com\naddress:\tAndishe, Faz 3, Mahale 23 St., Shahed St., Baharan St., No. 12,, Shahraiar, Tehran, IR\nphone:\t\t+982623554491\nsource:\t\tIRNIC # Filtered\n\n\n"]} \ 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 diff --git a/test/target_normalized/yahoo.it b/test/target_normalized/yahoo.it new file mode 100644 index 0000000..8f86d32 --- /dev/null +++ b/test/target_normalized/yahoo.it @@ -0,0 +1 @@ +{"status": ["ok"], "updated_date": ["2013-12-06T00:48:58", "2012-11-02T07:30:15", "2012-11-02T07:30:16"], "contacts": {"admin": {"city": "Milano", "handle": "DUP975799853", "name": "Martini Massimo Ernesto Aldo", "state": "MI", "street": "via Spadolini 7", "country": "IT", "postalcode": "20141", "creationdate": "2012-11-02T07:30:15", "changedate": "2012-11-02T07:30:15"}, "tech": {"city": "Sunnyvale", "handle": "DUP285050789", "name": "Yahoo Inc", "state": "California", "street": "Domain Administrator\n701 First Avenue", "country": "US", "postalcode": "94089", "creationdate": "2012-11-02T07:30:16", "changedate": "2012-11-02T07:30:16"}, "registrant": {"city": "Milano", "handle": "DUP211874838", "name": "Yahoo! Italia S.r.l.", "state": "MI", "street": "via Spadolini 7", "country": "IT", "postalcode": "20141", "organization": "Yahoo! Italia S.r.l.", "creationdate": "2012-11-02T07:30:15", "changedate": "2012-11-02T07:30:15"}, "billing": null}, "nameservers": ["ns1.yahoo.com", "ns5.yahoo.com", "ns7.yahoo.com", "ns2.yahoo.com", "ns3.yahoo.com"], "expiration_date": ["2014-11-20T00:00:00"], "creation_date": ["1998-05-11T00:00:00", "2012-11-02T07:30:15", "2012-11-02T07:30:16"], "raw": ["\n*********************************************************************\n* Please note that the following result could be a subgroup of *\n* the data contained in the database. *\n* *\n* Additional information can be visualized at: *\n* http://www.nic.it/cgi-bin/Whois/whois.cgi *\n*********************************************************************\n\nDomain: yahoo.it\nStatus: ok\nCreated: 1998-05-11 00:00:00\nLast Update: 2013-12-06 00:48:58\nExpire Date: 2014-11-20\n\nRegistrant\n Name: Yahoo! Italia S.r.l.\n Organization: Yahoo! Italia S.r.l.\n ContactID: DUP211874838\n Address: via Spadolini 7\n Milano\n 20141\n MI\n IT\n Created: 2012-11-02 07:30:15\n Last Update: 2012-11-02 07:30:15\n\nAdmin Contact\n Name: Martini Massimo Ernesto Aldo\n ContactID: DUP975799853\n Address: via Spadolini 7\n Milano\n 20141\n MI\n IT\n Created: 2012-11-02 07:30:15\n Last Update: 2012-11-02 07:30:15\n\nTechnical Contacts\n Name: Yahoo Inc\n ContactID: DUP285050789\n Address: Domain Administrator\n 701 First Avenue\n Sunnyvale\n 94089\n CALIFORNIA\n US\n Created: 2012-11-02 07:30:16\n Last Update: 2012-11-02 07:30:16\n\nRegistrar\n Organization: MarkMonitor International Limited\n Name: MARKMONITOR-REG\n Web: https://www.markmonitor.com/\n\nNameservers\n ns1.yahoo.com\n ns5.yahoo.com\n ns7.yahoo.com\n ns2.yahoo.com\n ns3.yahoo.com\n\n\n"], "registrar": ["MarkMonitor International Limited"]} \ No newline at end of file