aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJ08nY2023-08-14 11:02:18 +0200
committerJ08nY2023-08-14 11:02:18 +0200
commitf62cbc46ded0b98150b46d93533add3a27f7843e (patch)
tree5e5c26afc9ffdf91870f15bad5a7e2332f0c8f89
parent47246745a2cd3d6cb7e6269f2731f291788649d5 (diff)
downloadsec-certs-f62cbc46ded0b98150b46d93533add3a27f7843e.tar.gz
sec-certs-f62cbc46ded0b98150b46d93533add3a27f7843e.tar.zst
sec-certs-f62cbc46ded0b98150b46d93533add3a27f7843e.zip
Fix Canada CC scheme download.
They changed their website, which broke our code. Honestly, I am surprised this scheme parsing does not break more often.
-rw-r--r--src/sec_certs/constants.py6
-rw-r--r--src/sec_certs/sample/cc_scheme.py8
2 files changed, 10 insertions, 4 deletions
diff --git a/src/sec_certs/constants.py b/src/sec_certs/constants.py
index b28b925d..c1ebfdfc 100644
--- a/src/sec_certs/constants.py
+++ b/src/sec_certs/constants.py
@@ -73,8 +73,10 @@ CC_AUSTRALIA_INEVAL_URL = (
CC_AUSTRALIA_BASE_URL
+ "/resources-business-and-government/assessment-and-evaluation-programs/australian-information-security-evaluation-program-aisep"
)
-CC_CANADA_CERTIFIED_URL = "https://www.cyber.gc.ca/en/tools-services/common-criteria/certified-products"
-CC_CANADA_INEVAL_URL = "https://www.cyber.gc.ca/en/tools-services/common-criteria/products-evaluation"
+CC_CANADA_BASE_URL = "https://www.cyber.gc.ca"
+CC_CANADA_API_URL = CC_CANADA_BASE_URL + "/api/cccs/page/v1/get"
+CC_CANADA_CERTIFIED_URL = "/en/tools-services/common-criteria/certified-products"
+CC_CANADA_INEVAL_URL = "/en/tools-services/common-criteria/products-evaluation"
CC_ANSSI_BASE_URL = "https://www.ssi.gouv.fr"
CC_ANSSI_CERTIFIED_URL = CC_ANSSI_BASE_URL + "/en/products/certified-products/"
CC_BSI_BASE_URL = "https://www.bsi.bund.de/"
diff --git a/src/sec_certs/sample/cc_scheme.py b/src/sec_certs/sample/cc_scheme.py
index 12fb1fd4..307dfb57 100644
--- a/src/sec_certs/sample/cc_scheme.py
+++ b/src/sec_certs/sample/cc_scheme.py
@@ -153,7 +153,9 @@ def get_canada_certified() -> list[dict[str, Any]]:
:return: The entries.
"""
- soup = _get_page(constants.CC_CANADA_CERTIFIED_URL)
+ resp = _get(constants.CC_CANADA_API_URL + f"?lang=en&url={constants.CC_CANADA_CERTIFIED_URL}", None)
+ html_data = resp.json()["response"]["page"]["body"][0]
+ soup = BeautifulSoup(html_data, "html5lib")
tbody = soup.find("table").find("tbody")
results = []
for tr in tqdm(tbody.find_all("tr"), desc="Get CA scheme certified."):
@@ -176,7 +178,9 @@ def get_canada_in_evaluation() -> list[dict[str, Any]]:
:return: The entries.
"""
- soup = _get_page(constants.CC_CANADA_INEVAL_URL)
+ resp = _get(constants.CC_CANADA_API_URL + f"?lang=en&url={constants.CC_CANADA_INEVAL_URL}", None)
+ html_data = resp.json()["response"]["page"]["body"][0]
+ soup = BeautifulSoup(html_data, "html5lib")
tbody = soup.find("table").find("tbody")
results = []
for tr in tqdm(tbody.find_all("tr"), desc="Get CA scheme in evaluation."):