code: def build_url_parts (self):
          
          # check userinfo@host:port syntax
          self.userinfo, host = urllib.splituser(self.urlparts[1])
          port = urlutil.default_ports.get(self.scheme, 0)
          host, port = urlutil.splitport(host, port=port)
          if port is None:
              raise LinkCheckerError(_("URL host %(host)r has invalid port") %
                      {"host": host})
          self.port = port
          # set host lowercase
          self.host = host.lower()
          if self.scheme in scheme_requires_host:
              if not self.host:
                  raise LinkCheckerError(_("URL has empty hostname"))
              self.check_obfuscated_ip()
          if not self.port or self.port == urlutil.default_ports.get(self.scheme):
              host = self.host
          else:
              host = "%s:%d" % (self.host, self.port)
          if self.userinfo:
              self.urlparts[1] = "%s@%s" % (self.userinfo, host)
          else:
              self.urlparts[1] = host
          # safe anchor for later checking
          self.anchor = self.urlparts[4]
          if self.anchor is not None:
              assert isinstance(self.anchor, unicode), repr(self.anchor)
docs: Set userinfo, host, port and anchor from self.urlparts.
          Also checks for obfuscated IP addresses.