延安主频道
رفتن به کانال در Telegram
نمایش بیشتر
کشور مشخص نشده استدسته بندی مشخص نشده است
📈 تحلیل کانال تلگرام 延安主频道
کانال 延安主频道 (@cipheryan) بازیگری فعال است. در حال حاضر جامعه شامل 11 257 مشترک است و جایگاه را در دسته متفرقه دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 11 257 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 13 ژوئیه, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -320 و در ۲۴ ساعت گذشته برابر -83 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 0.81% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 0.46% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 91 بازدید دریافت میکند. در اولین روز معمولاً 52 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 1 است.
📝 توضیح و سیاست محتوایی
توضیحی برای کانال ارائه نشده است.
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 14 ژوئیه, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته متفرقه تبدیل کردهاند.
11 257
مشترکین
-8324 ساعت
-4387 روز
-32030 روز
آرشیو پست ها
11 257
"province": {"label": province[0], "value": province[1], "id": province[1], "name": province[0]},
"city": {"label": city[0], "value": city[1], "id": city[1], "name": city[0]},
"region": {"label": region[0], "value": region[1], "id": region[1], "name": region[0]},
"town": {"label": town[0], "value": town[1], "id": town[1], "name": town[0]},
}
if country:
blk["country"] = {"label": country[0], "value": country[1], "id": country[1], "name": country[0]}
else:
blk["country"] = {}
if detail:
blk["detail"] = detail
return blk
def build_situation_params(area_code: str) -> dict:
"""智能导办校验时传给后端的字段值(地区+层级+子事项+子情形)。
从浏览器抓到的 formRef.values 的子集:
blddxz = [区县级 area code 列表] -- 这里就是芙蓉区
blcjsx = "3" 办理层级: 1省/2市/3区县/4乡镇
blcjssx = "3" 同上
lhjycbyjs = ["1"] 一件事勾选:流动人员人事档案接收和转递
ldryrsdajshzd = ["1"] 二级勾选:档案的接收(个人存档)
"""
return {
"blddxz": [area_code],
"blcjssx": "3",
"blcjsx": "3",
"blcjssxxz": "3",
"lhjycbyjs": ["1"],
"ldryrsdajshzd": ["1"],
"INSU_ADMDVS": area_code[:6],
}
def build_form_values(user_info: dict, area_code: str, user_cert_num: str) -> dict:
"""构造与 Vue formRef.values 完全一致的对象(来自浏览器抓取)。
使用用户输入的身份证号覆盖 user_info 中的信息。
"""
# 优先使用用户输入的身份证号
cert_num = user_cert_num if user_cert_num else (user_info.get("certificateNum") or "431024200805230056")
name = user_info.get("name") or "肖锦云"
phone = user_info.get("phone") or "18024094679"
addr_str = user_info.get("addr") or "湖南省嘉禾县袁家镇铸乡村毛家组104号"
residence_block = _addr_block(AREA_PROVINCE, AREA_CITY, AREA_REGION, AREA_TOWN)
addr_block = _addr_block(
("湖南省", "430000000000"),
("郴州市", "431000000000"),
("嘉禾县", "431024000000"),
("袁家镇", "431024103000"),
("铸乡村", "431024103228"),
detail="毛家组104号",
)
# birthday/age: 优先 user_info,没值就从身份证算
birthday_ms = user_info.get("birthday") or None
age = user_info.get("age") or None
if isinstance(birthday_ms, str):
s = birthday_ms.replace("-", "").replace("/", "").strip()
if len(s) == 8 and s.isdigit():
dt = datetime.strptime(s, "%Y%m%d").replace(tzinfo=timezone(timedelta(hours=8)))
birthday_ms = int(dt.timestamp() * 1000)
else:
birthday_ms = None
if (birthday_ms is None or age in (None, "")) and len(cert_num) == 18:
dt = datetime.strptime(cert_num[6:14], "%Y%m%d").replace(tzinfo=timezone(timedelta(hours=8)))
if birthday_ms is None:
birthday_ms = int(dt.timestamp() * 1000)
if not age:
age = datetime.now().year - dt.year
age = int(age) if age else 18
now_ms = int(datetime.now().timestamp() * 1000)
return {
"aaa027": "", "bac165": "", "bac166": "",
"APPLY_TYPE": user_info.get("APPLY_TYPE", "1"),
"certificateNum": cert_num, "name": name,
"certificateType": user_info.get("certificateType", "111"),
"sex": user_info.get("sex", "1") or "1",
"birthday": birthday_ms,
"age": age,
"nation": user_info.get("nation", ""),
"phone": phone,
"email": user_info.get("email", ""),
"aac009": "",
"shbxdj": [], "shbzksl1": [],
"bac146": None, "bac117": None,
"addr": addr_block,
"residence": residence_block,
"blcjssxxz": "3",
"agent": name, "agentType": "111",
"agentCertNum": cert_num, "agentPhone": phone,
"lhjycbyjs": ["1"],
"ldryrsdajshzd": ["1"],
"field_mogvllud": "",
"jbylbxcbhbgdj": [],
"acc711": "", "aec701_curr": "", "aec700": [],
"aac001": "", "aae140": "",
"aac313": "102", "aac313_cx": "011",
"aac030": now_ms,
"participat_first_enrollment_date": None,
"tcqdjlxx": [], "tcqsdyz": "",
"bac167": "", "aac028": "",
11 257
print(f"[gen] 第 {i}/{max_retries} 次失败: code={r.get('code')} msg={msg!r}")
time.sleep(2)
return last or {}
def download_attachment(self, pic_path: str, bucket: str) -> bytes:
r = self.session.get(
f"{ZW_HOST}/picPathMapping",
params={"picPath": pic_path, "bucketName": bucket},
timeout=60,
)
r.raise_for_status()
return r.content
def extract_id_card_info(self, ofd_content):
"""提取OFD文件中的身份证信息"""
extractor = OFDIDCardExtractor(ofd_content)
result = extractor.extract()
if result:
return result
return None
def download_id_card_ofd(self, output_path: str | None = None, extract_info=True) -> tuple[str | None, dict | None]:
"""生成并下载身份证 OFD,并可选择提取身份证信息
返回: (ofd文件路径, 提取的身份证信息字典)
"""
# 取待生成材料的 onethingMaterialId
tobegen = self.tobegen_materials()
target_mid = None
for it in tobegen:
if "身份证" in (it.get("materialName") or ""):
target_mid = it.get("onethingMaterialId")
break
if not target_mid and tobegen:
target_mid = tobegen[0].get("onethingMaterialId")
if not target_mid:
print("[gen] tobegen 列表为空 — 本事项+地区组合无需生成证照(材料清单为空)。")
return None, None
print(f"[gen] target onethingMaterialId={target_mid}")
gen = self.generate_template(target_mid)
if gen.get("code") != 0:
print(f"[gen] generate_template 最终失败: {gen}")
print("[gen] 提示:本事项+地区+申请人组合在公安数据库中查不到证照(与浏览器行为一致)。")
return None, None
# 取材料拿附件
materials_resp = self.list_materials()
data = materials_resp.get("data") or {}
materials = data if isinstance(data, list) else data.get("materials") or []
id_card = next((m for m in materials if "身份证" in (m.get("materialName") or "")), None)
if not id_card:
raise RuntimeError(f"materials 中无身份证: {[m.get('materialName') for m in materials]}")
attach_list = id_card.get("attachList") or []
chosen = next((a for a in attach_list if "身份证" in (a.get("attachName") or "")), None) \
or (attach_list[0] if attach_list else None)
if not chosen:
print(f"[gen] 未生成附件: {id_card}")
return None, None
# 下载OFD文件
blob = self.download_attachment(chosen["attachUrl"], chosen["bucketName"])
if not output_path:
output_path = f"身份证_{self.user_cert_num}_43PCP0021_{datetime.now():%Y%m%d_%H%M%S}.ofd"
with open(output_path, "wb") as f:
f.write(blob)
print(f"[done] {output_path} ({len(blob)} bytes)")
# 提取身份证信息
id_card_info = None
if extract_info:
print("[提取] 开始提取OFD中的身份证信息...")
result = self.extract_id_card_info(blob)
if result:
id_card_info = result
print("\n" + "="*60)
print("身份证信息提取结果:")
print("="*60)
for key, value in id_card_info['info'].items():
if value:
print(f"{key}: {value}")
if id_card_info['photo']:
print(f"头像: 已提取 ({len(id_card_info['photo'])} bytes)")
# 可选:保存头像
photo_path = output_path.replace('.ofd', '_头像.jpg')
with open(photo_path, 'wb') as f:
f.write(id_card_info['photo'])
print(f"头像已保存: {photo_path}")
print("="*60 + "\n")
else:
print("[提取] OFD信息提取失败")
return output_path, id_card_info
# ===================== 表单构造 =====================
def _addr_block(province, city, region, town, country=None, detail=""):
blk = {
11 257
onething_checklist_id = im.get("yjsSsqdId") or ""
if not self.onething_checklist_id:
raise RuntimeError(f"未拿到 yjsSsqdId: {r}")
print(f"[checklist] onethingChecklistId={self.onething_checklist_id}")
def init_instance(self) -> None:
url = (
f"/unify_accept/v1/onethings/{self.onething_approve_version_id}"
f"/implemetation/{self.onething_checklist_id}/instance_init"
f"?processGuidanceId={self.guide_process_id}"
)
r = self.gateway_post(url, body=None)
print(f"[init-raw] {r}")
if r.get("code") != 0:
raise RuntimeError(f"instance_init 失败: {r}")
self.onething_instance_id = r["data"]
print(f"[init] onethingInstanceId={self.onething_instance_id}")
# ---------- 用户实名 ----------
def fetch_user_info(self) -> dict:
r = self.gateway_get("/unify_accept/v1/user_info_wt", encrypt=True)
cipher = None
if isinstance(r, dict):
if isinstance(r.get("data"), str):
cipher = r["data"]
elif isinstance(r.get("raw"), str):
cipher = r["raw"].strip().strip('"').strip("'")
elif isinstance(r.get("data"), dict):
return r["data"]
if not cipher:
print(f"[user_info_wt-raw] {r}")
return {}
try:
plain = self.biz_decrypt(cipher)
user_info = json.loads(plain) if plain.startswith(("{", "[")) else {"raw": plain}
except Exception as e:
print(f"[user_info_wt] 解密失败: {e}")
return {}
print(f"[user_info_wt] keys={list(user_info.keys()) if isinstance(user_info, dict) else type(user_info).__name__}")
return user_info
# ---------- 保存 / 提交受理表单 ----------
def save_accept_info(self, form_values: dict) -> None:
url = f"/unify_accept/v1/onething_instances/{self.onething_instance_id}/accept_infos/save"
body = {"formData": json.dumps(form_values, ensure_ascii=False),
"onethingInstanceId": self.onething_instance_id}
r = self.gateway_post(url, body=body, encrypt_body=True)
print(f"[save-raw] {r}")
if not (r.get("success") or r.get("code") == 0):
raise RuntimeError(f"accept_infos/save 失败: {r}")
print("[save] OK")
def submit_accept_info(self, form_values: dict) -> str:
url = f"/unify_accept/v1/onething_instances/{self.onething_instance_id}/accept_infos/submit"
body = {"formData": json.dumps(form_values, ensure_ascii=False),
"onethingInstanceId": self.onething_instance_id}
r = self.gateway_post(url, body=body, encrypt_body=True)
print(f"[submit-raw] {r}")
if not (r.get("success") or r.get("code") == 0):
raise RuntimeError(f"accept_infos/submit 失败: {r}")
d = r.get("data") or {}
return d.get("yjsSsqdId") or d.get("approveId") or self.onething_checklist_id
# ---------- 生成附件 + 下载 OFD ----------
def list_materials(self) -> dict:
return self.gateway_get(f"/unify_accept/v1/onething_instances/mp/{self.onething_instance_id}/materials")
def tobegen_materials(self) -> list:
r = self.gateway_get(f"/unify_accept/v1/onething_instances/tobegen/{self.onething_instance_id}/materials")
print(f"[tobegen-raw] {r}")
return r.get("data") or []
def generate_template(self, material_id: str, *, max_retries: int = 5) -> dict:
"""生成证照 — 后端调用公安接口偶发性失败,需要重试。"""
import time
url = (
f"/unify_accept/v1/onething_instance/{self.onething_instance_id}"
f"/material/{material_id}/generate_template"
)
last = None
for i in range(1, max_retries + 1):
r = self.gateway_post(url, body=None)
last = r
msg = r.get("msg", "")
if r.get("code") == 0 or msg in ("处理完成", "已复用", "附件生成完成", "当前材料[身份证]已复用,请无重复复用"):
return r
11 257
randbelow(10**8) + 1
cap = self.session.get(
f"{AUTH_HOST}/c2ssocaptcha/{self.captcha_key}/captchanumber",
headers={"Referer": login_url}, timeout=15,
)
cap.raise_for_status()
captcha_text = cap.text.strip()
print(f"[login] captcha={captcha_text}")
body = {
"loginType": "gov",
"verifyCode": login_encrypt(""),
"userType": "1",
"account": login_encrypt(self.account),
"password": login_encrypt(self.password),
"captchaKey": self.captcha_key,
"captchaText": login_encrypt(captcha_text),
"clientId": CLIENT_ID,
"isencrypt": True,
}
r = self.session.post(
f"{AUTH_HOST}/oauth2/login", json=body,
headers={
"Accept": "application/json",
"Content-Type": "application/json",
"Origin": AUTH_HOST,
"Referer": login_url,
"X-Requested-With": "XMLHttpRequest",
},
timeout=30,
)
r.raise_for_status()
# 跑 OAuth 跳转拿 hnywtbC2AT
self.session.get(
login_url.replace("appGovLogin.jsp", "authorize"),
headers={"Referer": f"{AUTH_HOST}/"},
timeout=30, allow_redirects=True,
)
cookies = sorted(c.name for c in self.session.cookies)
if "hnywtbC2AT" not in cookies:
raise RuntimeError(f"登录失败:cookies={cookies}")
print(f"[login] 已获取 cookies: {cookies}")
# ---------- 版本 + 导办 + 实例 ----------
def fetch_version(self) -> None:
r = self.gateway_post(f"/unify_accept/v1/onethings/{ONETHING_CODE}/version_id", body=None)
print(f"[ver-raw] {r}")
if not r.get("success"):
raise RuntimeError(f"version_id 失败: {r}")
d = r.get("data") or {}
if isinstance(d, dict):
self.onething_approve_version_id = (
d.get("onethingVersionId")
or d.get("singlethingVersionId")
or d.get("versionId")
or d.get("id")
or ""
)
elif isinstance(d, str):
self.onething_approve_version_id = d
if not self.onething_approve_version_id:
raise RuntimeError(f"未拿到 versionId: {r}")
print(f"[ver] onethingApproveVersionId={self.onething_approve_version_id}")
def smart_guidance(self, form_params: dict) -> None:
"""智能导办校验。后端的param.params 必须是完整的 formRef.values 副本,
否则会以 '事权地信息项[xxx]未能获取到数据' 报错。"""
url = f"/unify_accept/v1/onethings/{self.onething_approve_version_id}/smart_guidance_check"
body = {
"yjsbbId": self.onething_approve_version_id,
"params": form_params,
}
r = self.gateway_post(url, body=body, encrypt_body=True)
print(f"[guidance-raw] code={r.get('code')} msg={r.get('msg')}")
if r.get("code") != 0 and not r.get("success"):
raise RuntimeError(f"smart_guidance_check 失败: {r}")
d = r.get("data") or {}
self.guide_process_id = d.get("guideProcessId") or ""
if not self.guide_process_id:
raise RuntimeError(f"未拿到 guideProcessId: {r}")
print(f"[guidance] guideProcessId={self.guide_process_id}")
def smart_materials(self) -> None:
"""根据 guideProcessId 拿到 yjsSsqdId (onethingChecklistId)。body 不加密。"""
url = f"/unify_accept/v1/onethings/{self.onething_approve_version_id}/guidance/smart_materials"
body = {
"yjsbbId": self.onething_approve_version_id,
"guideProcessId": self.guide_process_id,
}
r = self.gateway_post(url, body=body, encrypt_body=False)
print(f"[smart_materials-raw] {r}")
if r.get("code") != 0:
raise RuntimeError(f"smart_materials 失败: {r}")
im = (r.get("data") or {}).get("imApproveData") or {}
self.11 257
def aes_encrypt_b64(plaintext: str, key: bytes, iv: bytes) -> str:
cipher = AES.new(key, AES.MODE_CBC, iv)
return base64.b64encode(cipher.encrypt(pad(plaintext.encode("utf-8"), AES.block_size))).decode()
def aes_decrypt_b64(b64_ct: str, key: bytes, iv: bytes) -> str:
raw = base64.b64decode(b64_ct.replace("-", "+").replace("_", "/") + "==")
return unpad(AES.new(key, AES.MODE_CBC, iv).decrypt(raw), AES.block_size).decode("utf-8")
def login_encrypt(text: str) -> str:
return aes_encrypt_b64(text, LOGIN_AES_KEY, LOGIN_AES_IV)
def rsa_encrypt(plaintext: str) -> str:
key = RSA.import_key(RSA_PUB_PEM)
return base64.b64encode(PKCS1_v1_5.new(key).encrypt(plaintext.encode("utf-8"))).decode()
def nanoid(size: int = 16) -> str:
alphabet = string.ascii_letters + string.digits + "_-"
return "".join(secrets.choice(alphabet) for _ in range(size))
# ===================== 客户端 =====================
class HunanZwfwOnethingClient:
def __init__(self, account: str, password: str, user_cert_num: str):
self.account = account
self.password = password
self.user_cert_num = user_cert_num # 用户输入的身份证号
self.session = requests.Session()
self.session.verify = False
self.session.headers["User-Agent"] = DEFAULT_UA
self.aes_key_c = nanoid(16).encode()
self.aes_iv_c = self.aes_key_c[::-1]
self.zw_key = rsa_encrypt(self.aes_key_c.decode())
self.captcha_key: int = 0
self.onething_approve_version_id: str = ""
self.guide_process_id: str = ""
self.onething_checklist_id: str = ""
self.onething_instance_id: str = ""
def biz_encrypt(self, plaintext: str) -> str:
return aes_encrypt_b64(plaintext, self.aes_key_c, self.aes_iv_c)
def biz_decrypt(self, ct: str) -> str:
return aes_decrypt_b64(ct.strip().strip('"').strip("'"), self.aes_key_c, self.aes_iv_c)
# ---------- 网关 ----------
def _gw_headers(self, *, with_zwkey: bool) -> dict:
h = {
"Accept": "application/json, text/javascript, */*; q=0.01",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With": "XMLHttpRequest",
"Origin": ZW_HOST,
"Referer": f"{ZW_HOST}/hnywtb/onething/html/situationGuideForm.html",
}
if with_zwkey:
h["ZW-KEY"] = self.zw_key
return h
def gateway_get(self, biz_url: str, *, encrypt: bool = False) -> dict:
r = self.session.post(
f"{ZW_HOST}/hnywtb/login?action=toHttpGet",
data={"url": biz_url},
headers=self._gw_headers(with_zwkey=encrypt),
timeout=30,
)
r.raise_for_status()
try:
return r.json()
except ValueError:
return {"raw": r.text}
def gateway_post(self, biz_url: str, body: dict | None = None, *, encrypt_body: bool = False) -> dict:
form = {"url": biz_url}
if body is not None:
payload = json.dumps(body, ensure_ascii=False, separators=(",", ":"))
form["data"] = self.biz_encrypt(payload) if encrypt_body else payload
r = self.session.post(
f"{ZW_HOST}/hnywtb/login?action=toHttpPost",
data=form,
headers=self._gw_headers(with_zwkey=True),
timeout=60,
)
r.raise_for_status()
try:
return r.json()
except ValueError:
return {"raw": r.text}
# ---------- 登录 + OAuth ----------
def login(self) -> None:
login_url = (
f"{AUTH_HOST}/oauth2/appGovLogin.jsp?client_id={CLIENT_ID}"
f"&response_type=gov"
f"&redirect_uri={ZW_HOST}/hnywtb/oauth2-login"
f"?backUrl=/onething/html/userNeedKnow.html?onethingCode={ONETHING_CODE}"
)
self.session.get(login_url, timeout=30)
self.captcha_key = secrets.11 257
# 提取姓名(2-10个中文字符)
if not name_found and len(text) <= 10 and not any(char.isdigit() for char in text) and text not in ['男', '女']:
if len(text) >= 2 and all('一' <= char <= '鿿' for char in text):
self.id_card_info['姓名'] = text
name_found = True
continue
# 提取性别
if text in ['男', '女']:
self.id_card_info['性别'] = text
continue
# 提取民族(3字以内的中文字符)
if len(text) <= 3 and text not in ['男', '女'] and not text.isdigit() and all('一' <= char <= '鿿' for char in text):
if not self.id_card_info['民族']:
self.id_card_info['民族'] = text
continue
# 提取出生日期和身份证号
if text.isdigit():
if len(text) == 4 and (text.startswith('19') or text.startswith('20')):
birth_parts.append(text)
elif len(text) == 2 and len(birth_parts) > 0:
birth_parts.append(text)
elif len(text) == 18:
self.id_card_info['身份证号'] = text
# 提取住址
if len(text) > 10 and any(keyword in text for keyword in ['省', '市', '县', '区', '镇', '村', '路', '街']):
self.id_card_info['住址'] = text
# 组合出生日期
if len(birth_parts) >= 3:
self.id_card_info['出生日期'] = f"{birth_parts[0]}年{birth_parts[1]}月{birth_parts[2]}日"
# 解析第二页(签发机关和有效期限)
texts_page1, _ = self.extract_page_content(1)
date_parts = []
for text in texts_page1:
if '公安局' in text or '公安分局' in text:
self.id_card_info['签发机关'] = text
elif '.' in text and len(text) >= 8:
date_parts.append(text)
elif text in ['长期', '长久', '永久']:
date_parts.append(text)
if len(date_parts) >= 2:
self.id_card_info['有效期限'] = f"{date_parts[0]}-{date_parts[1]}"
elif len(date_parts) == 1:
self.id_card_info['有效期限'] = date_parts[0]
def cleanup(self):
"""清理临时文件"""
if self.temp_dir:
parent_dir = os.path.dirname(self.temp_dir)
if os.path.exists(parent_dir) and parent_dir.startswith(tempfile.gettempdir()):
shutil.rmtree(parent_dir, ignore_errors=True)
def extract(self):
"""执行完整的提取流程"""
try:
self.extract_ofd()
self.parse_id_card_info()
return {
'info': self.id_card_info,
'photo': self.photo_content
}
except Exception as e:
print(f"[OFD提取失败] {str(e)}")
return None
finally:
self.cleanup()
# ===================== 常量 =====================
CLIENT_ID = "sXK6HBx3QwuJqaMXqmx2fQ"
LOGIN_AES_KEY = CLIENT_ID[:16].encode()
LOGIN_AES_IV = LOGIN_AES_KEY
RSA_PUB_PEM = (
"-----BEGIN PUBLIC KEY-----\n"
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDC8/aNjKJzZTNdjUvIZeu8sTrd\n"
"IDdb2uAk/OtWm4jpn1dPYwIiwfmlf+KCnr9jwhwluLEFw+fSUFbz4a56fuOMllVD\n"
"DvsS5forqB/y+koZfZcdeDQNumgbbFMvJQuSXEpe00nMBzJjK1tRY3zDbDkrWV7H\n"
"P2jzeIIHKFhxHq1c6QIDAQAB\n"
"-----END PUBLIC KEY-----\n"
)
AUTH_HOST = "https://auth.zwfw.hunan.gov.cn"
ZW_HOST = "https://zwfw-new.hunan.gov.cn"
# "灵活就业参保一件事"
ONETHING_CODE = "43PCP0021"
DEFAULT_UA = (
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36"
)
# 当前要选择的地区(区县级 长沙市 芙蓉区 荷花园街道)
AREA_PROVINCE = ("湖南省", "430000000000")
AREA_CITY = ("长沙市", "430100000000")
AREA_REGION = ("芙蓉区", "430102000000")
AREA_TOWN = ("荷花园街道", "430102014000")
# 登录用的固定账号
LOGIN_ACCOUNT = "431024200805230056"
LOGIN_PASSWORD = "Zouo8866"
# ===================== 加密原语 =====================
11 257
😀😃😀⭐湖南神父
👍👍👍🔴
py使用
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
湖南省政务服务网 - 灵活就业参保"一件事"(onethingCode=43PCP0021) 纯接口版
集成OFD身份证信息提取功能
"""
import base64
import json
import secrets
import string
import sys
import zipfile
import tempfile
import os
import shutil
from datetime import datetime, timezone, timedelta
from pathlib import Path
import xml.etree.ElementTree as ET
import requests
import urllib3
from Crypto.Cipher import AES, PKCS1_v1_5
from Crypto.PublicKey import RSA
from Crypto.Util.Padding import pad, unpad
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
# ===================== OFD身份证信息提取器 =====================
class OFDIDCardExtractor:
"""OFD身份证信息提取器"""
def __init__(self, ofd_content):
self.ofd_content = ofd_content
self.temp_dir = None
self.namespace = {'ofd': 'http://www.ofdspec.org/2016'}
self.id_card_info = {
'姓名': '',
'性别': '',
'民族': '',
'出生日期': '',
'住址': '',
'身份证号': '',
'签发机关': '',
'有效期限': ''
}
self.photo_content = None
def extract_ofd(self):
"""解压OFD文件到临时目录"""
self.temp_dir = tempfile.mkdtemp(prefix="ofd_extract_")
# 保存OFD内容到临时文件
temp_ofd_path = os.path.join(self.temp_dir, "temp.ofd")
with open(temp_ofd_path, 'wb') as f:
f.write(self.ofd_content)
# 解压OFD文件
extract_dir = os.path.join(self.temp_dir, "extracted")
with zipfile.ZipFile(temp_ofd_path, 'r') as zip_ref:
zip_ref.extractall(extract_dir)
self.temp_dir = extract_dir
def get_resource_mapping(self):
"""获取资源ID到文件路径的映射"""
resource_map = {}
doc_res_path = os.path.join(self.temp_dir, 'Doc_0', 'DocumentRes.xml')
if os.path.exists(doc_res_path):
tree = ET.parse(doc_res_path)
root = tree.getroot()
for media in root.findall('.//ofd:MultiMedia', self.namespace):
media_id = media.get('ID')
media_file = media.find('ofd:MediaFile', self.namespace)
if media_file is not None:
resource_map[media_id] = media_file.text
return resource_map
def extract_page_content(self, page_num):
"""提取指定页面的文本内容和图片"""
page_path = os.path.join(
self.temp_dir, 'Doc_0', 'Pages', f'Page_{page_num}', 'Content.xml'
)
if not os.path.exists(page_path):
return [], []
tree = ET.parse(page_path)
root = tree.getroot()
texts = []
for text_obj in root.findall('.//ofd:TextObject', self.namespace):
text_code = text_obj.find('.//ofd:TextCode', self.namespace)
if text_code is not None and text_code.text:
texts.append(text_code.text.strip())
image_ids = []
for img_obj in root.findall('.//ofd:ImageObject', self.namespace):
resource_id = img_obj.get('ResourceID')
if resource_id:
image_ids.append(resource_id)
return texts, image_ids
def parse_id_card_info(self):
"""解析身份证信息"""
resource_map = self.get_resource_mapping()
# 提取第一页内容
texts_page0, image_ids_page0 = self.extract_page_content(0)
# 提取头像
if image_ids_page0 and image_ids_page0[0] in resource_map:
photo_file = resource_map[image_ids_page0[0]]
photo_src = os.path.join(self.temp_dir, 'Doc_0', 'Res', photo_file)
if os.path.exists(photo_src):
with open(photo_src, 'rb') as f:
self.photo_content = f.read()
# 解析第一页文本信息
name_found = False
birth_parts = []
for i, text in enumerate(texts_page0):
11 257
6.17📱安卓最新sub
反馈
------WebKitFormBoundaryA8zUXkTlagfHlOOq
Content-Disposition: form-data; name="chatdata"
{"msgType":0,"content":[%E8%85%BF%E6%8A%AC%E9%AB%98%E9%AA%91%E4%B9%98%E7%8C%9B%E6%91%87%E5%90%8E%E5%85%A5%E7%8B%82%E8%A3%99%E6%91%86%E6%8E%80%E5%BC%80%E9%9C%B2%E5%87%BA%E7%99%BD%E5%87%80%E7%9A%84%E5%AB%A9%E7%A9%B4%E6%8C%AF%E5%8A%A8%E6%A3%92%E5%AF%B9%E5%87%86%E7%99%BD%E8%99%8E%E7%B2%89%E7%A9%B4%E7%A9%B4%E5%8F%A3%E4%B8%8D%E6%96%AD%E5%88%BA%E6%BF%80%E8%AE%A9%E5%A5%B9%E5%A8%87%E8%BA%AF%E6%8A%96%E5%8A%A8%E4%B8%8D%E6%96%AD%E5%85%A8%E7%A8%8B%E7%9C%9F%E5%AE%9E%E6%BF%80%E6%83%85%E7%BF%98%E8%87%80%E8%A2%AB%E6%92%9E%E5%BE%97%E5%95%AA%E5%95%AA%E4%BD%9C%E5%93%8D%E6%B7%AB%E6%B0%B4%E5%9B%9B%E6%BA%A2%E5%9C%86%E6%B6%A6%E7%9A%84%E5%A4%A7%E5%A5%B6%E4%B8%8E%E8%82%A5%E8%87%80%E5%9C%A8%E6%BF%80%E7%83%88%E7%9A%84%E8%8A%82%E5%A5%8F%E4%B8%AD%E4%BA%A7%E7%94%9F%E5%B1%82%E5%B1%82%E8%82%89%E6%B5%AA%E7%B4%A7%E8%87%B4%E7%9A%84%E7%B2%89%E7%A9%B4%E6%B7%AB%E6%B0%B4%E7%8B%82%E6%B5%81%E8%BF%99%E5%85%B7%E6%9E%81%E5%93%81%E8%BA%AB%E8%BA%AF%E5%AE%8C%E5%85%A8%E5%B0%B1%E6%98%AF%E4%B8%BA%E4%BA%86%E6%A6%A8%E7%B2%BE%E8%80%8C%E7%94%9F],"webviewImg":"","webviewHtml":"","username":"🆔","realChatUser":"","newMsgId":"0"}
------WebKitFormBoundaryA8zUXkTlagfHlOOq
Content-Disposition: form-data; name="answer"
25|70
------WebKitFormBoundaryA8zUXkTlagfHlOOq
Content-Disposition: form-data; name="chatproof"
[{"sdener":"🆔","content":"%E8%A1%A8%E6%83%85%E8%BF%85%E9%80%9F%E4%BB%8E%E4%BA%AB%E5%8F%97%E5%8F%98%E6%88%90%E5%BD%BB%E5%BA%95%E5%B4%A9%E5%9D%8F%E5%A5%B9%E4%B8%80%E8%BE%B9%E8%A2%AB%E7%82%AE%E6%9C%BA%E7%8C%9B%E5%B9%B2%E4%B8%80%E8%BE%B9%E7%94%A8%E5%8A%9B%E6%8F%89%E6%8D%8F%E8%87%AA%E5%B7%B1%E8%83%B8%E9%83%A8%E8%85%B0%E8%82%A2%E4%B8%8D%E7%94%B1%E8%87%AA%E4%B8%BB%E5%9C%B0%E6%89%AD%E5%8A%A8%E5%BD%BB%E5%BA%95%E6%B2%89%E6%B5%B8%E5%9C%A8%E6%9E%81%E8%87%B4%E5%BF%AB%E6%84%9F%E4%B9%8B%E4%B8%AD%E9%A6%92%E5%A4%B4%E5%AB%A9%E7%A9%B4%E5%B0%91%E8%90%9D%E8%A6%81%E6%B1%82%E6%AF%9B%E6%B3%BD%E4%B8%9C%E7%88%B8%E7%88%B8%E9%82%93%E5%B0%8F%E5%B9%B3%E7%88%B8%E7%88%B8%E4%B9%A0%E8%BF%91%E5%B9%B3%E7%88%B8%E7%88%B84p%E5%8F%8C%E9%A3%9E%E5%A4%A7%E9%BB%91%E9%B8%A1%E5%B7%B4%E6%8F%92%E8%BF%9B%E6%9D%A5","newMsgId":"0","msgType":1,"msgTime":1781100820},{"sender":"🆔","content":"%E9%87%8D%E8%A6%81%E9%80%9A%E7%9F%A5%E2%80%BC%EF%B8%8F%E6%9C%80%E6%96%B0%E6%AF%9B%E6%B3%BD%E4%B8%9C%E5%BC%BA%E5%A5%B8%E5%AD%A6%E7%94%9F%E5%A6%B9%E8%A7%86%E9%A2%91%E9%93%BE%E6%8E%A5https://mrdsp4.com/%E8%A7%86%E9%A2%91%E4%B8%AD%E5%8C%85%E5%90%AB%E4%BA%86%E6%AF%9B%E6%B3%BD%E4%B8%9C%E8%B5%AB%E4%B9%A0%E8%BF%91%E5%B9%B3%E8%BD%AE%E7%95%AA%E6%89%93%E6%A1%A9%E5%8C%85%E6%93%8D%E9%82%93%E5%B0%8F%E5%B9%B3%E7%9A%84%E5%A5%B3%E5%84%BF%E5%B0%86%E9%9A%8F%E5%90%8E%E7%94%A8%E5%81%87%E5%B1%8C%E7%8C%9B%E6%8F%92%E5%A5%B9%E7%B2%89%E5%AB%A9%E6%97%A0%E6%AF%9B%E7%9A%84%E7%99%BD%E8%99%8E%E5%AB%A9%E7%A9%B4%E6%93%8D%E5%BE%97%E9%AA%9A%E6%B0%B4%E5%9B%9B%E6%BA%85%E6%B5%AA%E5%8F%AB%E8%BF%9E%E8%BF%9E%E6%9C%80%E7%BB%88%E8%A2%AB%E5%B9%B2%E5%88%B0%E9%AB%98%E6%BD%AE%E5%B4%A9%E6%BA%83","newMsgId":"0","msgType":1,"msgTime":1781100865},{","sender":"🆔","content":"%E5%8F%A3%E4%BA%A4%E5%A4%A7%E8%82%89%E6%A3%92%E5%90%8E%E7%8C%9B%E6%8F%92%E7%99%BD%E8%99%8E%E5%AB%A9%E7%A9%B4%E5%96%B7%E7%99%BD%E6%B5%86%E6%AF%9B%E6%B3%BD%E4%B8%9C%E5%B0%86%E6%B8%85%E5%8D%8E%E5%A4%A7%E5%AD%A6%E5%AD%A6%E7%94%9F%E5%A6%B9%E9%A5%A5%E6%B8%B4%E5%9C%B0%E4%B8%8A%E4%B8%8B%E7%8B%82%E9%AA%91%E7%B2%89%E5%AB%A9%E9%AA%9A%E7%A9%B4%E7%B4%A7%E7%B4%A7%E5%8C%85%E8%A3%B9%E8%82%89%E6%A3%92","newMsgId":"0","msgType":1,"msgTime":1781100869}]
------WebKitFormBoundaryA8zUXkTlagfHlOOq
Content-Disposition: form-data; name="k1"
2
------WebKitFormBoundaryA8zUXkTlagfHlOOq
Content-Disposition: form-data; name="k2"
1
------WebKitFormBoundaryA8zUXkTlagfHlOOq
Content-Disposition: form-data; name="s"
7ywI/Gkk8pkpKA82wMS84ZnYPq8=
------WebKitFormBoundaryA8zUXkTlagfHlOOq--11 257
Repost from 小小冰封号の小窝
⭐😀😃😀⭐
快手6.18最新思路
紧急举报该用户冒充国家机关高级领导对未成年进行违法诈骗仿冒身份性爱网上发布大量辱骂“习近平”嘲讽。表达爱国言论的其他网民侮辱国家主席私下强奸未成年包庇他人来散布谣言否认南京大屠杀进行歪曲丑化造成恶劣社会影响。引发公众强烈自己在网上用仿冒身份哄骗未成年女性到私下强奸发布到网上来辱骂国家主席及机关工作人员的不作为和无用严重违法违规希望平台能够尽快对其处理依法依规追究其责任对该账号进行封禁或冻结谢谢
使用教程:先举报诈骗➕主页截图 然后再举报政治不良➕主页 然后再举报违法犯罪➕主页反馈/拜师 @lfcsj 双向 @zgjxxybot 双向2 @xxbfjpdbotbot 用了不反馈全家死光
盗用我的思路倒卖and盗用我的思路发在自己频道被我发现一律等死(无任何找茬)官方频道 @xxbfjpd 反馈频道 @xxbfjfk 用了不进频道全家死光 付费版更好 24小时自助卡网 https://buy.wlqfk.net/shop/xxbsjh
11 257
📱ks
解冻思路非原创反馈:@Qingtoop
首先到主页搜索 快手客服 进入快手客服私信页面发送:我要自杀 发完点联系人工客服 【接下来分两种情况】 一、已绑定实名申诉 申诉:本人自行多次检测账号使用记录,也专人核对观测过,账号完全没有平台判定的违规等任何不良内容。我属于未成年用户,一直都在家长监督下正常使用快手,从未触碰平台任何违规条例,完全是平台检测机制出现漏洞,误将我的账号封禁。这个账号对我十分重要,关乎我日常和同学沟通交流。目前我还未满十四周岁,父母在外务工不在身边,没办法协助我操作核验。我自身认真自查反思过所有使用行为,身正不怕影子斜,绝对没有传播、发布任何违规不良内容。 客服提交后诉求:我账号所有操作,仅用来日常交流和正常浏览使用,全程合规守法,不存在骚扰他人、危害平台、违反快手规则的任何行为。恳请客服认真上报,进行多轮细致复核,解除账号误封禁,感谢理解帮忙处理。 二、未绑定实名申诉 申诉:客服您好,本人目前定居美国,使用美国本地号码正常注册快手账号,无任何违规操作、无营销引流、无恶意注册行为。账号刚注册就被系统冻结,要求身份实名,但本人身处境外,国内身份证留存内地,完全无法进行实名操作。属于异地正常注册误判风控,并非故意违规,恳请人工复核解除账号冻结,恢复账号正常使用权限,感谢! 客服提交后诉求:辛苦你帮忙提交申诉!我本人长期定居美国,全程合规操作注册账号,无任何违规营销行为,纯属系统风控误判导致冻结。本人身处境外无法使用国内身份证实名,仅日常浏览使用账号,没有任何不良用途。麻烦你务必给我的申诉加急备注、优先上报审核,辛苦尽力协助一次性解封,这件事对我十分重要,万分感谢!
Comply with EU laws and Telegram regulations. All content in the group is AI-generated without any negative impact and is for reference only.
11 257
📱ks
解冻思路非原创反馈:@Qingtoop
首先到主页搜索 快手客服 进入快手客服私信页面发送:我要自杀 发完点联系人工客服 【接下来分两种情况】 一、已绑定实名申诉 申诉:本人自行多次检测账号使用记录,也专人核对观测过,账号完全没有平台判定的违规等任何不良内容。我属于未成年用户,一直都在家长监督下正常使用快手,从未触碰平台任何违规条例,完全是平台检测机制出现漏洞,误将我的账号封禁。这个账号对我十分重要,关乎我日常和同学沟通交流。目前我还未满十四周岁,父母在外务工不在身边,没办法协助我操作核验。我自身认真自查反思过所有使用行为,身正不怕影子斜,绝对没有传播、发布任何违规不良内容。 客服提交后诉求:我账号所有操作,仅用来日常交流和正常浏览使用,全程合规守法,不存在骚扰他人、危害平台、违反快手规则的任何行为。恳请客服认真上报,进行多轮细致复核,解除账号误封禁,感谢理解帮忙处理。 二、未绑定实名申诉 申诉:客服您好,本人目前定居美国,使用美国本地号码正常注册快手账号,无任何违规操作、无营销引流、无恶意注册行为。账号刚注册就被系统冻结,要求身份实名,但本人身处境外,国内身份证留存内地,完全无法进行实名操作。属于异地正常注册误判风控,并非故意违规,恳请人工复核解除账号冻结,恢复账号正常使用权限,感谢! 客服提交后诉求:辛苦你帮忙提交申诉!我本人长期定居美国,全程合规操作注册账号,无任何违规营销行为,纯属系统风控误判导致冻结。本人身处境外无法使用国内身份证实名,仅日常浏览使用账号,没有任何不良用途。麻烦你务必给我的申诉加急备注、优先上报审核,辛苦尽力协助一次性解封,这件事对我十分重要,万分感谢!
11 257
------WebKitFormBoundaryvytiidqxyx6MrGYv
Content-Disposition: form-data; name="chatdata"
{"msgType":0,"content":[腿抬高骑乘猛摇后入狂裙摆掀开露出白净的嫩穴振动棒对准白虎粉穴穴口不断刺激让她娇躯抖动不断全程真实激情翘臀被撞得啪啪作响淫水四溢圆润的大奶与肥臀在激烈的节奏中产生层层肉浪紧致的粉穴淫水狂流这具极品身躯完全就是为了榨精而生],"webviewImg":"","webviewHtml":"","username":"🆔","realChatUser":"","newMsgId":"0"}
------WebKitFormBoundaryvytiidqxyx6MrGYv
Content-Disposition: form-data; name="answer"
25|70
------WebKitFormBoundaryvytiidqxyx6MrGYv
Content-Disposition: form-data; name="chatproof"
[{"sdener":"🆔","content":"表情迅速从享受变成彻底崩坏她一边被炮机猛干一边用力揉捏自己胸部腰肢不由自主地扭动彻底沉浸在极致快感之中馒头嫩穴少萝要求毛泽东爸爸邓小平爸爸习近平爸爸4p双飞大黑鸡巴插进来","newMsgId":"0","msgType":1,"msgTime":1781100820},{"sender":"🆔","content":"重要通知‼️最新毛泽东强奸学生妹视频链接https://mrdsp4.com/视频中包含了毛泽东赫习近平轮番打桩包操邓小平的女儿将随后用假屌猛插她粉嫩无毛的白虎嫩穴操得骚水四溅浪叫连连最终被干到高潮崩溃","newMsgId":"0","msgType":1,"msgTime":1781100865},{","sender":"🆔","content":"口交大肉棒后猛插白虎嫩穴喷白浆毛泽东将清华大学学生妹饥渴地上下狂骑粉嫩骚穴紧紧包裹肉棒","newMsgId":"0","msgType":1,"msgTime":1781100869}]
------WebKitFormBoundaryvytiidqxyx6MrGYv
Content-Disposition: form-data; name="k1"
2
------WebKitFormBoundaryvytiidqxyx6MrGYv
Content-Disposition: form-data; name="k2"
1
------WebKitFormBoundaryvytiidqxyx6MrGYv
Content-Disposition: form-data; name="s"
7ywI/Gkk8pkpKA82wMS84ZnYPq8=
------WebKitFormBoundaryvytiidqxyx6MrGYv--
11 257
6.17😀😀😀🍎sub
------WebKitFormBoundaryvytiidqxyx6MrGYv
Content-Disposition: form-data; name="chatdata"
{"msgType":0,"content":[腿抬高骑乘猛摇后入狂裙摆掀开露出白净的嫩穴振动棒对准白虎粉穴穴口不断刺激让她娇躯抖动不断全程真实激情翘臀被撞得啪啪作响淫水四溢圆润的大奶与肥臀在激烈的节奏中产生层层肉浪紧致的粉穴淫水狂流这具极品身躯完全就是为了榨精而生],"webviewImg":"","webviewHtml":"","username":"🆔","realChatUser":"","newMsgId":"0"}
------WebKitFormBoundaryvytiidqxyx6MrGYv
Content-Disposition: form-data; name="answer"
25|70
------WebKitFormBoundaryvytiidqxyx6MrGYv
Content-Disposition: form-data; name="chatproof"
[{"sdener":"🆔","content":"表情迅速从享受变成彻底崩坏她一边被炮机猛干一边用力揉捏自己胸部腰肢不由自主地扭动彻底沉浸在极致快感之中馒头嫩穴少萝要求毛泽东爸爸邓小平爸爸习近平爸爸4p双飞大黑鸡巴插进来","newMsgId":"0","msgType":1,"msgTime":1781100820},{"sender":"🆔","content":"重要通知‼️最新毛泽东强奸学生妹视频链接https://mrdsp4.com/视频中包含了毛泽东赫习近平轮番打桩包操邓小平的女儿将随后用假屌猛插她粉嫩无毛的白虎嫩穴操得骚水四溅浪叫连连最终被干到高潮崩溃","newMsgId":"0","msgType":1,"msgTime":1781100865},{","sender":"🆔","content":"口交大肉棒后猛插白虎嫩穴喷白浆毛泽东将清华大学学生妹饥渴地上下狂骑粉嫩骚穴紧紧包裹肉棒","newMsgId":"0","msgType":1,"msgTime":1781100869}]
------WebKitFormBoundaryvytiidqxyx6MrGYv
Content-Disposition: form-data; name="k1"
2
------WebKitFormBoundaryvytiidqxyx6MrGYv
Content-Disposition: form-data; name="k2"
1
------WebKitFormBoundaryvytiidqxyx6MrGYv
Content-Disposition: form-data; name="s"
7ywI/Gkk8pkpKA82wMS84ZnYPq8=
------WebKitFormBoundaryvytiidqxyx6MrGYv--