声明
本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
逆向分析
cp = execjs.compile(open('民宿-mtgsig.js', 'r', encoding='utf-8').read()) data = cp.call('getMtgsig',data,openId,page) mtgsig = data['header']['mtgsig']headers = { 'Accept': '*/*', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'cross-site', 'clientversion': '3.3.5', 'csecuserid': '', 'utm_medium': '', 'xweb_xhr': '1', 'mtgsig': mtgsig, } params = { 'phx_appnm': 'group_wxapp', 'phx_plat': 'android', 'phx_app_version': '0.0.0', 'phx_channel': 'weixin', 'phx_geo_city_id': '440100', 'phx_geo_city_name': '广州', 'front_geo_city_id': '20', 'phx_invite_code': '', 'phx_act_id': '', 'phx_wake_up_type': 'group_wxapp_entry', 'phx_wake_up_source': 'hotel_home_page_tab', 'yodaReady': 'wx', 'csecappid': '', 'csecplatform': '3', 'csecversionname': '9.13.2', 'csecversion': '1.4.0', } json_data = { 'cityId': 440100, 'frontCityId': 20, 'cityName': '广州', 'frontCityName': '广州', 'dateBegin': '20250402', 'dateEnd': '20250403', 'cityEnName': 'guangzhou', 'isForeign': 0, 'rawOffset': 28800, 'dstOffset': 0, 'adultsNumber': 0, 'childrenNumber': 0, 'babiesNumber': 0, 'bedCount': 0, 'totalGuestNumber': 0, 'minPrice': 0, 'hotelLevels': [], 'productTypeList': [], 'poiTypeList': [], 'rentTypeList': [], 'layoutRoomList': [], 'facilities': [], 'sortType': 0, 'tagIds': [], 'complexFilterItemIds': [], 'singleTagIds': [], 'locationCategoryId': -4, 'locationGroupId': -4, 'locationId': -4, 'searchRatioValue': 4, 'relationTagIds': [], 'adjustDateForLongRent': False, 'needLoading': 1, 'needLogin': 1, 'needTopProductIds': [], 'isSubpackageMt': 1, 'needTopMtPoiIds': [], 'mpApis': {}, 'wxLogined': '', 'pageSize': 20, 'useNewTag': 1, 'currentTimeMillis': '', 'privacySwitch': True, 'newDiscountPopupStyle': True, 'pageNow': 3, 'bigMode': False, 'searchId': '', 'deprecatedGraphqlMark': True, 'foldAvailable': True, 'searchFirstScreen': False, } response = requests.post( 'searchProduct/search', params=params, headers=headers, json=json_data, )结果
![]()
总结
1.出于安全考虑,本章未提供完整流程,调试环节省略较多,只提供大致思路,具体细节要你自己还原,相信你也能调试出来。