Weibo site check fix, activation mechanism added (#1938)

This commit is contained in:
Soxoj
2024-12-06 11:31:20 +01:00
committed by GitHub
parent 29c1f56fcb
commit 5641456ba0
3 changed files with 71 additions and 9 deletions
+41
View File
@@ -39,6 +39,47 @@ class ParsingActivator:
bearer_token = r.json()["accessToken"] bearer_token = r.json()["accessToken"]
site.headers["authorization"] = f"Bearer {bearer_token}" site.headers["authorization"] = f"Bearer {bearer_token}"
@staticmethod
def weibo(site, logger):
headers = dict(site.headers)
import requests
session = requests.Session()
# 1 stage: get the redirect URL
r = session.get(
"https://weibo.com/clairekuo",
headers=headers,
allow_redirects=False
)
logger.debug(
f"1 stage: {'success' if r.status_code == 302 else 'no 302 redirect, fail!'}"
)
location = r.headers.get("Location")
# 2 stage: go to passport visitor page
headers["Referer"] = location
r = session.get(location, headers=headers)
logger.debug(
f"2 stage: {'success' if r.status_code == 200 else 'no 200 response, fail!'}"
)
# 3 stage: gen visitor token
headers["Referer"] = location
r = session.post(
"https://passport.weibo.com/visitor/genvisitor2",
headers=headers,
data={
'cb': 'visitor_gray_callback',
'tid': '',
'from': 'weibo'
},
)
cookies = r.headers.get('set-cookie')
logger.debug(
f"3 stage: {'success' if r.status_code == 200 and cookies else 'no 200 response and cookies, fail!'}"
)
site.headers["Cookie"] = cookies
def import_aiohttp_cookies(cookiestxt_filename): def import_aiohttp_cookies(cookiestxt_filename):
cookies_obj = MozillaCookieJar(cookiestxt_filename) cookies_obj = MozillaCookieJar(cookiestxt_filename)
+4 -2
View File
@@ -277,14 +277,16 @@ def process_site_result(
) )
if site.activation and html_text and is_need_activation: if site.activation and html_text and is_need_activation:
logger.debug(f"Activation for {site.name}")
method = site.activation["method"] method = site.activation["method"]
try: try:
activate_fun = getattr(ParsingActivator(), method) activate_fun = getattr(ParsingActivator(), method)
# TODO: async call # TODO: async call
activate_fun(site, logger) activate_fun(site, logger)
except AttributeError: except AttributeError as e:
logger.warning( logger.warning(
f"Activation method {method} for site {site.name} not found!" f"Activation method {method} for site {site.name} not found!",
exc_info=True,
) )
except Exception as e: except Exception as e:
logger.warning( logger.warning(
+26 -7
View File
@@ -30186,20 +30186,39 @@
}, },
"Weibo": { "Weibo": {
"absenceStrs": [ "absenceStrs": [
"username_box\\", "<h2>400 Bad Request</h2>"
"info_list username\\"
], ],
"presenseStrs": [ "presenseStrs": [
"pf_username\\", "{\"ok\":1,\"data\":{\"user\":"
"use_num\\"
], ],
"headers": {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:133.0) Gecko/20100101 Firefox/133.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.5",
"Upgrade-Insecure-Requests": "1",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "cross-site",
"Priority": "u=0, i",
"Pragma": "no-cache",
"Cache-Control": "no-cache",
"Accept-Encoding": "gzip, deflate, br, zstd",
"TE": "trailers",
"Cookie": "SUB=_2AkMQDkYqf8NxqwFRmf4QzWnqbop-wwHEieKmUrfxJRMxHRl-yT9kqm4gtRB6O45oxc8K9O2Jsarg5zYMmQy3bR_LfISF; expires=Saturday, 06-Dec-2025 09:51:25 GMT; path=/; domain=.weibo.com; secure; httponly; SameSite=None, SUBP=0033WrSXqPxfM72-Ws9jqgMF55529P9D9Whze9rurqv2pUdg7sY.DTbO; expires=Saturday, 06-Dec-2025 09:51:25 GMT; path=/; domain=.weibo.com, SRT=D.QqHBTrsMMFkSVdRtOeYoWrSNUdRr4Q9QUeE8U3vkW3WzMdbbN-sPVcStNbHi5mYNUCsuPDbhVdrrS3MNAZSLiDP65FJtNqbLJ%219qRQHeiQ9SOdsM5Oi84byJS%21bOMX77%2AB.vAflW-P9Rc0lR-ykKDvnJqiQVbiRVPBtS%21r3J8sQVqbgVdWiMZ4siOzu4DbmKPWf5c4uVePpVQRpVEP%21SqWqdNumPFHL; expires=Mon, 04-Dec-2034 09:51:25 GMT; Max-Age=315360000; path=/; domain=.passport.weibo.com; secure; HttpOnly, SRF=1733478685; expires=Mon, 04-Dec-2034 09:51:25 GMT; Max-Age=315360000; path=/; domain=.passport.weibo.com; secure"
},
"activation": {
"method": "weibo",
"marks": [
"<title>\u5fae\u535a</title",
"<title>Sina Visitor System</title>"
],
"url": "https://passport.weibo.com/visitor/genvisitor2"
},
"urlProbe": "https://weibo.com/ajax/profile/info?custom={username}",
"url": "https://weibo.com/{username}", "url": "https://weibo.com/{username}",
"urlMain": "https://weibo.com", "urlMain": "https://weibo.com",
"usernameClaimed": "clairekuo", "usernameClaimed": "clairekuo",
"usernameUnclaimed": "noonewouldeverusethis7", "usernameUnclaimed": "noonewouldeverusethis7",
"headers": {
"Cookie": "SUB=_2AkMXyuc_f8NxqwJRmP8SyWPrbo13zAvEieKhlhbkJRMxHRl-123"
},
"checkType": "message", "checkType": "message",
"tags": [ "tags": [
"cn", "cn",