Bnyro
fe5bdd1bf2
[feat] magnific: solve captcha to bypass botblocking
Magnific now employs a very simple to solve CAPTCHA before
all API requests (essentially summing up some numbers).
Python script for testing:
```python
import re
from lxml import html
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:156.0) Gecko/20100101 Firefox/156.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.9',
'Sec-GPC': '1',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'same-origin',
'Priority': 'u=0, i',
'Pragma': 'no-cache',
'Cache-Control': 'no-cache',
}
resp = requests.get(
"https://www.magnific.com/api/regular/search?term=tree&filters%5Bai-generated%5D%5Bexcluded%5D=1&page=1&locale=en&filters%5Blicense%5D=free",
headers=headers,
)
cookies = resp.cookies
print(resp.text)
_NUMBER_RE = re.compile("\d+")
_BM_VERIFY = re.compile(r"\"bm-verify\":\s*\"(.*?)\"")
doc = html.fromstring(resp.text)
script = doc.xpath("//script")[0].text
numbers = [int(m) for m in _NUMBER_RE.findall(script)]
bm_verify = _BM_VERIFY.search(resp.text)
if not bm_verify:
exit(1)
bm_verify = bm_verify.group(1)
print("bm-verify: " + bm_verify)
solution = sum(numbers)
print(f"sum({numbers}) = {solution}")
resp = requests.post(
"https://www.magnific.com/_sec/verify?provider=interstitial",
json={"bm-verify": bm_verify, "pow": solution},
headers=headers,
cookies=cookies,
)
resp = requests.get(
"https://www.magnific.com/api/regular/search?term=bird&filters%5Bai-generated%5D%5Bexcluded%5D=1&page=1&locale=en&filters%5Blicense%5D=free",
headers=headers,
cookies=resp.cookies,
)
print(resp.text)
```
2026-09-19 11:31:00 +02:00
..
2026-09-04 16:16:09 +08:00
2026-09-02 14:26:22 +02:00
2025-02-07 17:19:00 +01:00
2026-09-03 17:28:29 +02:00
2026-09-17 12:22:38 +02:00
2026-09-18 16:13:42 +02:00
2026-09-17 12:22:38 +02:00
2026-07-13 17:46:56 +02:00
2026-05-25 12:43:02 +02:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2026-09-18 13:19:28 +02:00
2026-09-18 13:19:28 +02:00
2024-03-11 14:55:38 +01:00
2026-09-17 12:22:38 +02:00
2026-05-25 12:41:31 +02:00
2026-01-27 17:18:46 +01:00
2026-07-13 17:46:56 +02:00
2025-09-20 10:56:46 +02:00
2026-09-13 23:48:01 +02:00
2026-09-02 16:30:00 +02:00
2026-09-17 12:22:38 +02:00
2026-09-13 23:48:01 +02:00
2026-07-30 14:54:39 +02:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2026-07-13 17:46:56 +02:00
2026-09-02 16:30:00 +02:00
2026-06-15 10:52:00 +02:00
2026-09-17 12:22:38 +02:00
2026-09-07 13:18:07 +02:00
2024-06-15 15:42:29 +02:00
2026-09-17 12:22:38 +02:00
2026-01-10 12:45:27 +01:00
2024-04-28 08:42:18 +02:00
2026-09-05 19:46:48 +02:00
2026-07-13 17:46:56 +02:00
2026-09-02 16:30:00 +02:00
2024-09-23 07:02:10 +02:00
2026-09-13 23:48:01 +02:00
2026-09-10 14:45:43 +02:00
2024-05-17 16:37:39 +02:00
2025-09-20 10:56:46 +02:00
2025-09-18 19:40:03 +02:00
2026-06-15 10:52:00 +02:00
2025-01-28 07:07:08 +01:00
2025-09-26 12:35:57 +02:00
2026-06-15 10:52:00 +02:00
2026-06-15 10:52:00 +02:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2025-11-14 20:26:43 +01:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2026-05-25 12:43:02 +02:00
2026-09-13 23:48:01 +02:00
2026-09-12 16:32:42 +08:00
2026-05-25 12:41:31 +02:00
2026-09-13 23:48:01 +02:00
2026-09-04 16:16:09 +08:00
2026-09-13 23:48:01 +02:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2026-09-13 23:48:01 +02:00
2025-09-26 12:35:57 +02:00
2026-09-17 12:22:38 +02:00
2026-09-02 16:30:00 +02:00
2026-09-17 12:22:38 +02:00
2026-09-10 11:27:28 +02:00
2026-09-02 16:30:00 +02:00
2026-09-18 13:19:28 +02:00
2026-09-18 11:47:45 +02:00
2026-07-13 17:46:56 +02:00
2026-09-02 16:30:00 +02:00
2026-09-15 08:50:46 +08:00
2025-09-26 12:35:57 +02:00
2026-09-18 16:13:42 +02:00
2024-03-09 08:15:50 +01:00
2025-09-26 12:35:57 +02:00
2026-07-13 17:46:56 +02:00
2026-09-17 12:22:38 +02:00
2025-09-26 12:35:57 +02:00
2026-09-18 07:41:40 +02:00
2026-09-02 16:30:00 +02:00
2026-09-13 23:48:01 +02:00
2025-09-26 12:35:57 +02:00
2024-09-15 08:04:21 +02:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2026-09-04 16:16:09 +08:00
2026-09-04 16:16:09 +08:00
2026-08-22 11:00:06 +08:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2026-09-03 17:28:29 +02:00
2026-09-04 16:16:09 +08:00
2025-11-22 09:59:38 +01:00
2025-11-10 20:37:01 +01:00
2026-09-13 23:48:01 +02:00
2026-09-02 16:30:00 +02:00
2026-06-15 10:52:00 +02:00
2024-05-16 07:30:38 +02:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2026-09-02 16:30:00 +02:00
2026-09-17 12:22:38 +02:00
2026-07-13 17:46:56 +02:00
2026-06-22 09:51:57 +02:00
2026-08-10 14:14:33 +02:00
2026-09-13 23:48:01 +02:00
2026-06-15 10:52:00 +02:00
2026-09-17 09:46:21 +02:00
2026-07-30 16:11:42 +02:00
2026-09-17 12:22:38 +02:00
2026-07-13 17:46:56 +02:00
2026-09-17 12:22:38 +02:00
2025-01-28 07:07:08 +01:00
2026-04-07 15:49:46 +02:00
2025-12-03 09:57:42 +01:00
2026-09-17 12:22:38 +02:00
2026-09-19 11:31:00 +02:00
2026-09-04 11:18:59 +02:00
2026-09-02 16:30:00 +02:00
2026-07-13 17:46:56 +02:00
2025-05-21 14:52:16 +02:00
2026-09-16 16:35:47 +02:00
2026-05-25 12:41:31 +02:00
2026-09-02 16:30:00 +02:00
2026-05-25 12:41:31 +02:00
2025-04-12 11:14:13 +02:00
2025-09-26 12:35:57 +02:00
2026-09-17 12:22:38 +02:00
2026-09-13 23:48:01 +02:00
2026-06-15 10:52:00 +02:00
2025-01-28 07:07:08 +01:00
2026-09-02 16:30:00 +02:00
2026-05-05 21:40:20 +02:00
2026-09-02 16:30:00 +02:00
2026-09-12 18:17:41 +02:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2026-09-13 23:48:01 +02:00
2026-07-13 17:46:56 +02:00
2026-09-17 12:22:38 +02:00
2026-07-13 17:46:56 +02:00
2026-09-17 12:22:38 +02:00
2026-09-13 23:48:01 +02:00
2025-09-20 10:56:46 +02:00
2026-09-17 12:22:38 +02:00
2025-09-20 10:56:46 +02:00
2025-09-26 12:35:57 +02:00
2026-09-01 13:56:11 +02:00
2026-09-13 23:48:01 +02:00
2025-10-01 07:13:10 +02:00
2026-06-15 10:52:00 +02:00
2026-09-18 16:13:42 +02:00
2026-06-15 10:52:00 +02:00
2026-09-18 16:13:42 +02:00
2026-09-11 16:24:58 +02:00
2026-09-13 23:48:01 +02:00
2025-09-26 12:35:57 +02:00
2026-09-18 17:18:59 +02:00
2025-12-07 23:34:16 +01:00
2026-09-17 12:22:38 +02:00
2026-07-13 17:46:56 +02:00
2026-09-02 16:30:00 +02:00
2026-09-17 12:22:38 +02:00
2026-09-13 13:43:01 +02:00
2026-05-25 12:41:31 +02:00
2026-09-17 12:22:38 +02:00
2026-09-02 16:30:00 +02:00
2026-09-03 17:28:29 +02:00
2026-06-15 10:52:00 +02:00
2026-09-13 23:48:01 +02:00
2025-09-01 16:33:31 +02:00
2026-09-17 12:22:38 +02:00
2025-10-18 14:43:35 +02:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2026-09-04 09:49:07 +02:00
2026-09-17 12:22:38 +02:00
2025-09-26 12:35:57 +02:00
2026-09-17 12:22:38 +02:00
2026-09-05 19:11:49 +02:00
2026-06-08 07:09:06 +02:00
2025-08-20 14:27:17 +02:00
2026-09-17 12:22:38 +02:00
2026-06-15 10:52:00 +02:00
2026-06-15 10:52:00 +02:00
2026-09-17 12:22:38 +02:00
2026-09-18 16:13:42 +02:00
2025-03-02 13:31:31 +01:00
2026-07-13 17:46:56 +02:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2026-09-13 23:48:01 +02:00
2026-09-13 23:48:01 +02:00
2026-09-17 12:22:38 +02:00
2025-09-26 12:35:57 +02:00
2026-07-13 17:46:56 +02:00
2026-09-13 23:48:01 +02:00
2024-03-11 14:55:38 +01:00
2026-09-17 12:22:38 +02:00
2026-09-02 16:30:00 +02:00
2025-04-18 09:30:17 +02:00
2026-09-18 16:13:42 +02:00
2026-06-06 18:04:19 +02:00
2026-09-02 16:30:00 +02:00
2026-07-13 17:46:56 +02:00
2026-09-17 12:22:38 +02:00
2026-07-13 17:46:56 +02:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2026-07-13 17:46:56 +02:00
2026-09-02 16:30:00 +02:00
2026-05-25 16:38:06 +02:00
2026-09-13 23:48:01 +02:00
2026-09-19 07:30:06 +02:00
2026-09-18 16:13:42 +02:00
2026-09-17 12:22:38 +02:00
2025-07-09 07:55:37 +02:00
2025-09-26 12:35:57 +02:00
2024-11-24 12:41:57 +01:00
2026-09-17 12:22:38 +02:00
2026-07-13 17:46:56 +02:00
2026-05-25 12:41:31 +02:00
2026-09-13 23:48:01 +02:00
2026-09-17 12:22:38 +02:00
2025-09-26 12:35:57 +02:00
2026-09-13 23:48:01 +02:00
2025-07-24 07:42:31 +02:00
2025-10-01 07:13:10 +02:00
2026-09-18 16:13:42 +02:00
2026-09-17 12:22:38 +02:00
2026-09-13 23:48:01 +02:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2026-09-04 11:18:59 +02:00
2024-03-11 14:55:38 +01:00
2026-09-17 12:22:38 +02:00
2026-09-17 12:22:38 +02:00
2026-09-04 16:16:09 +08:00
2026-09-04 16:16:09 +08:00
2026-09-17 12:22:38 +02:00