- fixed bad POST requests for misskey (you should run ./fba.py fetch_blocks --software=misskey)
- added more headers for security checks
database.cursor.execute("SELECT domain, software, origin, nodeinfo_url FROM instances WHERE software = ? OR original_software = ? ORDER BY last_blocked ASC, total_blocks DESC", [args.software, args.software])
elif args.only_none:
# Check only entries with total_blocked=None
+ logger.debug("Checking only entries with total_blocked=None ...")
database.cursor.execute("SELECT domain, software, origin, nodeinfo_url FROM instances WHERE software IN ('pleroma', 'mastodon', 'lemmy', 'friendica', 'misskey', 'piefed', 'typecho') AND nodeinfo_url IS NOT NULL AND total_blocks IS NULL ORDER BY last_blocked ASC, total_blocks DESC")
else:
# Re-check after "timeout" (aka. minimum interval)
+ logger.debug("Checking any federating software with possible blocklist ...")
database.cursor.execute("SELECT domain, software, origin, nodeinfo_url FROM instances WHERE software IN ('pleroma', 'mastodon', 'lemmy', 'friendica', 'misskey', 'piefed', 'typecho') AND nodeinfo_url IS NOT NULL ORDER BY last_blocked ASC, total_blocks DESC")
# Load all rows
# HTTP headers for API requests
_api_headers = {
- "User-Agent" : config.get("useragent"),
- "Content-Type": "application/json",
+ "User-Agent" : config.get("useragent"),
+ "Content-Type" : "application/json",
+ "Sec-Fetch-Dest": "empty",
+ "Sec-Fetch-Mode": "cors",
+ "Sec-Fetch-Site": "same-origin",
}
# Exceptions to always catch
"status_code": 200,
}
+ # Add domain as referer and origin
+ headers["Referer"] = f"https://{domain}/"
+ headers["Origin"] = f"https://{domain}/"
+
try:
logger.debug("Sending POST to domain='%s',path='%s',data='%s',headers(%d)='%s'", domain, path, data, len(headers), headers)
start = time.perf_counter()
try:
logger.debug("Fetching offset=%d from domain='%s' ...", offset, domain)
if offset == 0:
- logger.debug("Sending JSON API request to domain='%s',step=%d,offset=%d", domain, step, offset)
+ logger.debug("Sending JSON API request to domain='%s',step=%d ...", domain, step)
fetched = network.post_json_api(domain, "/api/federation/instances", json.dumps({
- "sort" : "+pubAt",
+ "sort" : "+pubSub",
"host" : None,
- "suspended": True,
"limit" : step
}), headers)
else:
- logger.debug("Sending JSON API request to domain='%s',step=%d,offset=%d", domain, step, offset)
+ logger.debug("Sending JSON API request to domain='%s',step=%d,offset=%d ...", domain, step, offset)
fetched = network.post_json_api(domain, "/api/federation/instances", json.dumps({
- "sort" : "+pubAt",
+ "sort" : "+pubSub",
"host" : None,
- "suspended": True,
"limit" : step,
"offset" : offset - 1
}), headers)