import bs4
from fba import csrf
-from fba import utils
from fba.helpers import config
from fba.helpers import domain as domain_helper
logger.debug("Checking CSRF for domain='%s'", domain)
headers = csrf.determine(domain, dict())
except network.exceptions as exception:
- logger.warning("Exception '%s' during checking CSRF (fetch_peers,%s) - EXIT!", type(exception), __name__)
+ logger.warning("Exception '%s' during checking CSRF (fetch_peers,%s)", type(exception), __name__)
instances.set_last_error(domain, exception)
+
+ logger.debug("Returning empty list ... - EXIT!")
return list()
try:
doc = bs4.BeautifulSoup(response.text, "html.parser")
logger.debug("doc[]='%s'", type(doc))
- headers = doc.findAll("div", {"class": "home-instances container-lg"})
found = None
- logger.debug("Checking %d header(s) ...", len(headers))
- for header in headers:
- logger.debug("header[]='%s'", type(header))
- content = header.contents[0]
-
- logger.debug("content[%s]='%s'", type(content), content)
- if content is None:
- logger.debug("domain='%s' has returned empty header='%s' - SKIPPED!", domain, header)
- continue
- elif not isinstance(content, str):
- logger.debug("content[]='%s' is not supported/wanted type 'str' - SKIPPED!", type(content))
- continue
- elif content.lower() in translations:
- logger.debug("Found header with blocked instances - BREAK!")
- found = header
+ for criteria in [{"class": "home-instances container-lg"}, {"class": "container"}]:
+ logger.debug("criteria='%s'", criteria)
+ containers = doc.findAll("div", criteria)
+
+ logger.debug("Checking %d containers ...", len(containers))
+ for container in containers:
+ logger.debug("container[]='%s'", type(container))
+ for header in container.find_all(["h2", "h3", "h4", "h5"]):
+ content = header
+ logger.debug("header[%s]='%s' - BEFORE!", type(header), header)
+ if header is not None:
+ content = str(header.contents[0])
+ logger.debug("content[%s]='%s' - AFTER!", type(content), content)
+
+ if content is None:
+ logger.debug("domain='%s' has returned empty header='%s' - SKIPPED!", domain, header)
+ continue
+ elif not isinstance(content, str):
+ logger.debug("content[]='%s' is not supported/wanted type 'str' - SKIPPED!", type(content))
+ continue
+ elif content.lower() in translations:
+ logger.debug("Found header='%s' with blocked instances - BREAK(3) !", header)
+ found = header
+ break
+
+ logger.debug("found[]='%s'", type(found))
+ if found is not None:
+ logger.debug("Found header with blocked instances - BREAK(2) !")
+ break
+
+ logger.debug("found[]='%s'", type(found))
+ if found is not None:
+ logger.debug("Found header with blocked instances - BREAK(1) !")
break
logger.debug("found[]='%s'", type(found))
logger.debug("blocklist()=%d - EXIT!", len(blocklist))
return blocklist
- blocking = found.find_next(["ul","table"]).findAll("a")
+ blocking = found.find_next(["ul", "table"]).findAll("a")
logger.debug("Found %d blocked instance(s) ...", len(blocking))
for tag in blocking:
logger.debug("tag[]='%s'", type(tag))
if blocked == "":
logger.warning("blocked='%s' is empty after tidyup.domain() - SKIPPED!", tag.contents[0])
continue
- elif not utils.is_domain_wanted(blocked):
+ elif not domain_helper.is_wanted(blocked):
logger.debug("blocked='%s' is not wanted - SKIPPED!", blocked)
continue
doc = bs4.BeautifulSoup(response.text, "html.parser")
logger.debug("doc[]='%s'", type(doc))
- headers = doc.findAll("div", {"class": "home-instances container-lg"})
- logger.debug("Checking %d headers ...", len(headers))
- for header in headers:
- logger.debug("header[%s]='%s'", type(header), header)
-
- rows = header.find_next(["ul","table"]).findAll("a")
- logger.debug("Found %d blocked instance(s) ...", len(rows))
- for tag in rows:
- logger.debug("tag[]='%s'", type(tag))
- text = tag.contents[0] if isinstance(tag.contents[0], str) else tag.contents[0].text
- peer = tidyup.domain(text)
- logger.debug("peer='%s'", peer)
-
- if peer == "":
- logger.debug("peer is empty - SKIPPED!")
- continue
- elif not utils.is_domain_wanted(peer):
- logger.debug("peer='%s' is not wanted - SKIPPED!", peer)
- continue
- elif peer in peers:
- logger.debug("peer='%s' already added - SKIPPED!", peer)
- continue
-
- logger.debug("Appending peer='%s' ...", peer)
- peers.append(peer)
+ for criteria in [{"class": "home-instances container-lg"}, {"class": "container"}]:
+ logger.debug("criteria='%s'", criteria)
+ containers = doc.findAll("div", criteria)
+
+ logger.debug("Checking %d containers ...", len(containers))
+ for header in containers:
+ logger.debug("header[%s]='%s'", type(header), header)
+
+ rows = header.find_next(["ul","table"]).findAll("a")
+ logger.debug("Found %d instance(s) ...", len(rows))
+ for tag in rows:
+ logger.debug("tag[]='%s'", type(tag))
+ text = tag.contents[0] if isinstance(tag.contents[0], str) else tag.contents[0].text
+ peer = tidyup.domain(text)
+ logger.debug("peer='%s'", peer)
+
+ if peer == "":
+ logger.debug("peer is empty - SKIPPED!")
+ continue
+ elif not domain_helper.is_wanted(peer):
+ logger.debug("peer='%s' is not wanted - SKIPPED!", peer)
+ continue
+ elif peer in peers:
+ logger.debug("peer='%s' already added - SKIPPED!", peer)
+ continue
+
+ logger.debug("Appending peer='%s' ...", peer)
+ peers.append(peer)
logger.debug("peers()=%d", len(peers))
if len(peers) == 0:
logger.debug("doc[]='%s',only='%s' - CALLED!")
if not isinstance(doc, bs4.BeautifulSoup):
raise ValueError(f"Parameter doc[]='{type(only)}' is not of type 'bs4.BeautifulSoup'")
- elif not isinstance(only, str) and only != None:
+ elif not isinstance(only, str) and only is not None:
raise ValueError(f"Parameter only[]='{type(only)}' is not of type 'str'")
elif isinstance(only, str) and only == "":
raise ValueError("Parameter 'only' is empty")
logger.debug("script.contents[0][]='%s'", type(script.contents[0]))
- isoData = script.contents[0].split("=")[1].strip().replace(":undefined", ":\"undefined\"")
- logger.debug("isoData[%s]='%s'", type(isoData), isoData)
+ iso_data = script.contents[0].split("=")[1].strip().replace(":undefined", ":\"undefined\"")
+ logger.debug("iso_data[%s]='%s'", type(iso_data), iso_data)
parsed = None
try:
- parsed = json.loads(isoData)
+ parsed = json.loads(iso_data)
except json.decoder.JSONDecodeError as exception:
- logger.warning("Exception '%s' during parsing %d Bytes: '%s'", type(exception), len(isoData), str(exception))
+ logger.warning("Exception '%s' during parsing %d Bytes: '%s' - EXIT!", type(exception), len(iso_data), str(exception))
return list()
logger.debug("parsed[%s]()=%d", type(parsed), len(parsed))
if peer == "":
logger.debug("peer is empty - SKIPPED!")
continue
- elif not utils.is_domain_wanted(peer):
+ elif not domain_helper.is_wanted(peer):
logger.debug("peer='%s' is not wanted - SKIPPED!", peer)
continue
elif peer in peers: