如何获取Anghami登录Post请求所需的re_token与fingerprint
解决Anghami登录的re_token和fingerprint生成问题
一、Fingerprint生成方式
你提供的示例fingerprint是Base64编码的JSON字符串,解码后结构为:
{"fp":"a6371a4c-5581-4163-b1dd-0760d2b99fea","h":"4921d358"}
其中fp是类UUID的唯一标识,h是短哈希值,这是Anghami通过浏览器指纹技术生成的设备标识。要生成符合要求的fingerprint:
- 使用无头浏览器(如Puppeteer)加载Anghami登录页面,模拟真实浏览器环境;
- 页面内置的JavaScript会自动计算指纹,可通过监听页面变量或执行对应脚本获取原始指纹数据;
- 将获取到的
fp和h组装成上述JSON结构,再进行Base64编码,即可得到请求所需的fingerprint参数。
二、re_token(Google reCAPTCHA令牌)获取方式
re_token是Google reCAPTCHA的验证令牌,用于拦截自动化登录请求。获取步骤:
- 用无头浏览器打开Anghami登录页面,等待reCAPTCHA组件加载完成;
- 若为reCAPTCHA v2,需完成验证(如点击复选框、识别图片等,自动化处理需借助第三方验证码服务,注意此操作可能违反Anghami的服务条款);
- 验证通过后,页面会生成
g-recaptcha-response字段,其值即为所需的re_token; - 若为reCAPTCHA v3,页面会自动生成令牌,可通过执行页面中的reCAPTCHA回调函数直接获取。
格式化后的测试代码
import requests from requests.auth import HTTPProxyAuth headers = { 'authority': '', 'accept': 'application/json, text/plain, */*', 'accept-language': 'en-US,en;q=0.9', 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 'origin': 'https://play.anghami.com', 'referer': 'https://play.anghami.com/login', 'sec-ch-ua': '"Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-site', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36', } link = 'https://api.anghami.com/gateway.php' s = requests.Session() proxies = { "http": "http://", } data = { 'm': 'an', 'u': 'email', 'p': 'password', 'devicename': 'Chrome 104', 're_token':'03ANYolqvEDNfBhyM-qJ77j92_vkw8yt1VtKKc9e6jZFl9mG4sysFOvVZ0LlQWsMecFRWRCMFGG8KAgdWw1S0kUPB-1yW5kfJ8B2XGLnlaW7XAReGvyYpB2WgZeGXPdxlTi0PINbN2Ga9wI2ecF9jltpf7gcUj9MLucb9KDaUYENySmFq2ts5qh9g_2nr6AXx_igsD53xvWPGrGi_n7evy224P7A0NitmjcXKlAKL_rlkkXqbwOd4qbzF_IkTKX6iSNLfb2FFso8S75OKa0dlbfLO_7eY2zU7VzVKa23XWet3RXDED7q8Rx8RKFaO9n_lvbG-PORGCpmajnbWtWoIhEZpY06mt41vx4AoW0JnCtV9Z3v5AsAoM_SIZNawTLVBKyI3iVk9AbsGskh5DZ0DzIQ2Hp_2325fuyhjp2gjW_yUud7DuGVZ9Zn7WjteVnE0Yv4ZQoWx5Z2Hz-s7Qy7G2Acm6WLbuIvS_5JsJsfLYh_hiB_DY79UyKHNpeQtulqS1wMGwHqDFbmfv', 'ngsw-bypass': 'true', 'type': 'authenticate', 'language': 'en', 'lang': 'en', 'web2': 'true', 'fingerprint': 'eyJmcCI6ImE2MzcxYTRjLTU1ODEtNDE2My1iMWRkLTA3NjBkMmI5OWZlYSIsImgiOiI0OTIxZDM1OCJ9', 'angh_type': 'authenticate', } auth = HTTPProxyAuth(proxyacc) s.proxies = proxies s.auth = auth extnext_ip = s.post(link, data=data, headers=headers) print(extnext_ip.text) print(extnext_ip.url)
内容的提问来源于stack exchange,提问作者Jean Pierre Waked
相关产品推荐
相关产品推荐

