首页 > 其他分享 >boss

boss

时间:2024-03-17 20:11:53浏览次数:24  
标签:__ code name get js headers boss

import subprocess
import re
import requests
from urllib.parse import urlparse, parse_qs

from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")

import execjs

获取security-check url

params = {
"query": "Java",
"industry": "",
"position": "",
"ka": "hot-position-1"
}
city="101280600"
headers = {
"Cookie":f"lastCity={city}",
"Referer":"https://www.zhipin.com/",
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36',
}
res = requests.get(url=f"https://www.zhipin.com/c{city}/",params=params,headers=headers,allow_redirects=False)
security_check = res.headers.get('location')
print(security_check)

检测 https://www.zhipin.com/ https://www.zhipin.com/web/common/security-js/feb06034.js

security_check_url = "https://www.zhipin.com/?"+security_check
sec_res = requests.get(url=security_check_url,headers=headers)
print(sec_res.status_code)

def get_js_name(url,val):
#获取js名称
parsed = urlparse(url)
params = parse_qs(parsed.query)
name = params.get(val, None)
return name[0]

def get_js():
name = get_js_name(security_check,"name")
js_url = f'https://www.zhipin.com/web/common/security-js/{name}.js'
res = requests.get(url=js_url,headers=headers)
return res

获取 ts 和 seed

ts = get_js_name(security_check,"ts")
seed = get_js_name(security_check,"seed")
js_code = get_js().text
print("获取seed,ts",ts,seed)

def process_js_code(js_code):
"""
:return: 修改后js
"""
# 找到js
regex = r'\w+=function(){return N.apply(null,[\d+].concat(Array.prototype.slice.call(arguments)));};'
match = re.search(regex,js_code)
regex_res = match.group(0)
#找到函数变量
regex1 = r'(\w+)=function(){return (\w+).apply(null,[(\d+)].concat(Array.prototype.slice.call(arguments)));};'
match1 = re.search(regex1, regex_res)

Function_name =  match1.group(1)
Apply_function = match1.group(2)
Number = match1.group(3)
#生成新的方法后替换
replacement = "{}=function(t,n){{return {}.apply(this,[{},t,n]);}};window.loader={};".format(Function_name,Apply_function,Number,Function_name)
new_str = re.sub(regex, replacement, js_code,1)

return new_str

def js_all_code(js_code):
code = "window = global;"
js_code = process_js_code(js_code)
sign_code = ";function sign(n,t){return window.loader(n,t)};"
return code+js_code+sign_code

def get_sign(js_code,zeed,ts):
data = js_all_code(js_code)
zp_stoken = execjs.compile(data).call("sign",zeed,ts)
print(data)
print(zp_stoken)
return zp_stoken

zp_stoken = get_sign(js_code,seed,int(ts))

def get_job_list():
cookies = {
'wd_guid': 'b0e02dad-9890-46a8-9fb9-914f9793383d',
'historyState': 'state',
'__g': '-',
'__l': 'l=%2Fwww.zhipin.com%2Fweb%2Fgeek%2Fjob%3Fquery%3DJava%26city%3D101010100&r=&g=&s=3&friend_source=0',
'_bl_uid': 'tjldetCOunj7XqwmaoFadsmbUgyh',
'Hm_lvt_194df3105ad7148dcf2b98a91b5e727a': '1710601402',
'lastCity': '101280600',
'Hm_lpvt_194df3105ad7148dcf2b98a91b5e727a': '1710604226',
'__c': '1710601401',
'__a': '15400391.1710601401..1710601401.14.1.14.14',
'zp_stoken': zp_stoken,
}

headers = {
    'authority': 'www.zhipin.com',
    'accept': 'application/json, text/plain, */*',
    'accept-language': 'zh-CN,zh;q=0.9',
    # 'cookie': 'wd_guid=b0e02dad-9890-46a8-9fb9-914f9793383d; historyState=state; __g=-; __l=l=%2Fwww.zhipin.com%2Fweb%2Fgeek%2Fjob%3Fquery%3DJava%26city%3D101010100&r=&g=&s=3&friend_source=0; _bl_uid=tjldetCOunj7XqwmaoFadsmbUgyh; Hm_lvt_194df3105ad7148dcf2b98a91b5e727a=1710601402; lastCity=101280600; Hm_lpvt_194df3105ad7148dcf2b98a91b5e727a=1710604226; __c=1710601401; __a=15400391.1710601401..1710601401.14.1.14.14; __zp_stoken__=5f92fOzXDlcK6XsK4QCYQDQwFBUEqNDUpMz07KUE1Pjs1Nzc8OzU%2FFTorUsK3KsO6w49hw4g0NSY1N0I1O0M3NUAWNUPEu8K6OjQsZMK1JMO6w5Nhw4oIDgRHK8OywrUpwprCtQg1wrcpJybCtTg6QjQSwrTCusODJMK2wrjDgyrCuMK6w4E6OjQ6MjYEWgQQNjpHS1UISGNKX2JMBlNRUyg0QTY1IsSDw7osNwwSDA4MDxEPDQ8ECgQTERMNExETBAoEBgQtO8KgwrjCosKAxKLEncO9xJTCm0%2FDp8Kvwr7Cp8OnwqzDt2fCtFLCr8Kuwo5twpFWwrHCtU7CpsOBfMK1VUx1WW7Cpm9PUsKyw4BJYMOATnARwrVxEBB1YhE2EmfCs8OF',
    'referer': 'https://www.zhipin.com/web/geek/job?query=Java&city=101280600&page=1',
    'sec-ch-ua': '"Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sec-fetch-dest': 'empty',
    'sec-fetch-mode': 'cors',
    'sec-fetch-site': 'same-origin',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36',
    'x-requested-with': 'XMLHttpRequest',
}
params = {
    'scene': '1',
    'query': 'Java',
    'city': '101280600',
    'experience': '',
    'payType': '',
    'partTime': '',
    'degree': '',
    'industry': '',
    'scale': '',
    'stage': '',
    'position': '',
    'jobType': '',
    'salary': '',
    'multiBusinessDistrict': '',
    'multiSubway': '',
    'page': '3',
    'pageSize': '30',
}

response = requests.get('https://www.zhipin.com/wapi/zpgeek/search/joblist.json', params=params, cookies=cookies, headers=headers)

seed = response.json().get("zpData").get("seed")
ts = response.json().get("zpData").get("ts")
zp_stoken2 = get_sign(js_code, seed, ts)
print("尝试第二次请求:zp_stoken2",zp_stoken2)
cookies['__zp_stoken__'] = zp_stoken2
response = requests.get('https://www.zhipin.com/wapi/zpgeek/search/joblist.json', params=params, cookies=cookies, headers=headers)

return response

标签:__,code,name,get,js,headers,boss
From: https://www.cnblogs.com/xchuan/p/18079060

相关文章

  • 基于Unity3d的google小恐龙游戏8-------背景音乐与第六个BOSS
    前言大家好,上一次unity练习记录中我添加了背景以及第五个boss,丰富了一下游戏内容,但是玩的时候发现好像有一些空洞,所以决定再次添加一些东西。本次练习主要是想要搞两个UI,以及背景音乐,然后再添加一个新的boss。其实我也很想再添加一些小怪,这些就是后话了。先把前面三个功能添加......
  • 44. Boss 制作和整体流程
    本节目标给精英敌人场景添加精英,给Boss场景添加Boss实现方法精英敌人场景添加精英将普通敌人拷贝一份复制到精英场景,把Spine动画拖过去,拖过去记得选SkeletonMecaim,还要修改一下图层,让它来到default层然后编辑EliteEnemy_Controller,动画状态机内容如下它和普通小怪的......
  • 今天BOSS约了个面试,HR直接发我一道面试题
    前言在电商、外卖、预约服务等场景中,订单超时自动取消是一个常见的业务需求。这一功能不仅提高了系统的自动化程度,还为用户提供了更好的体验。需求如下:TODO如果用户在生成订单后一定时间未支付,则系统自动取消订单。接下来就用SpringBoot实现订单超时未支付自动取消的几......
  • boss老虎的机制以及其他boss的工作日志
    1.Enegy每次技能所消耗的体力2.Angry老虎收到攻击,以及未攻击到敌人会增加怒气3.angry增加致一定比例,那么该enegy消耗增加,而技能冷却缩短4.当老虎血量下降到一定的比例,会触发大招等技能老虎转向有问题:√跳跃一定要跳到玩家面前替换解决方案(跳跃+移动)老虎跑到玩家吗,面前时......
  • 五年Android开发,在Boss上投了十几个简历,没有一个面试邀请......药丸了
    之前在浏览某论坛时,看到一名程序员发表了如下的吐槽:“坐标杭州,工作五年的Android开发者,技术水平尚可,但最近这边加班太严重了,考虑换一个岗位。然而,在Boss上投了十几个简历,完全没有合适的面试机会。简历是公开的,竟然没有一个公司对我感兴趣。相比之下,前年这个时候,电话邀约面试的电话......
  • 小项目想当大Boss? 你该读读《孙子兵法》 | 京东云技术团队
    你是否还记得高启强?一个到处求人办事经常被恶霸欺凌的卖鱼小贩,因为读了《孙子兵法》,一跃成为黑白通吃的商界大佬。作为弱矩阵环境下只有责任毫无权力的小小项目经理,你是否经常感到无助、经常感到迷茫?你想成为引领集团大型战略复杂项目,一呼百应的项目管理领域大Boss吗?那我建议你也读......
  • 1820BThe BOSS Can Count Pairs[分块]
    Problem-B-Codeforces题意是给n个a和b,1<=a,b<=n,问有多少ai*aj==bi+bj,i<j,2e5的数据规模看一眼数据规模,a,b都是小于等于n的,意味着如果ai*aj>n那么就对答案无贡献,或者说,对于一个ai,剩下数中可能能对答案产生影响的aj,一定是小于等于n/ai的。那么我们可以以ai为依据升序排序,......
  • 如何批量下载BOSS直聘候选人发往邮箱的简历附件
    虽然是用在接收BOSS直聘邮件的,但也可以改为其他邮箱,不过解析需要自己修改importimaplibimportemailimportosimportbase64fromemail.headerimportdecode_headerimportre#邮箱信息email_user=''email_pass=''#连接到IMAP服务器imap_server='imap.xxx'......
  • 【题解】CF1830B The BOSS Can Count Pairs
    你考虑,我们观察数据范围,发现可以是\(O(n\sqrtn)/O(n\logn)\)的,我们又看到乘法,便有几个大概的想法:数论分块\(O(\sqrtn)\)枚举其中一个乘数还有什么……(笔者学识浅陋,读者可以帮忙补充)我们可以找到两种\(O(n^2)\)做法:\(O(n^2)\)枚举数对\((i,j)\)然后进行判断。......
  • Jboss安装成windows服务及其卸载
    作者fbysss一、将JBOSS安装为windowsservice:   1.到http://www.opencrx.org/downloads/JavaService-bin-1.2.0.zip下载JavaService,解压。   2.拷贝JavaService.exe为%JBOSS_HOME%/bin/JBossService.exe.(首先确定已经有JBOSS_HOME环境变量。)   3.进入%JBOSS_HOME%/,建......