身份证信息查询接口 查询身份证具体信息

时间:2019-05-13 22:28:33下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《身份证信息查询接口 查询身份证具体信息》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《身份证信息查询接口 查询身份证具体信息》。

第一篇:身份证信息查询接口 查询身份证具体信息

身份证信息查询接口 查询身份证具体信息

身份证信息查询接口可以查询身份证上具体信息,包括地区、性别、出生日期等情况。接口名称:身份证信息查询接口 接口平台:聚合数据

接口地址:http://apis.juhe.cn/idcard/index 支持格式:JSON/XML 请求方式:get 请求示例:http://apis.juhe.cn/idcard/index?key=KEY&cardno=***211 请求参数: 名称 cardno dtype key 类型 必填

说明 身份证号码

返回数据格式:json或xml,默认json 你申请的key

请的string Y string Y string Y 调用样例及调试工具:

API测试工具 返回字段: 名称 error_code reason data area sex

类型 int string-string string

说明 返回码 返回说明 返回结果集 地区 性别 birthday

string 出生日期

身份证号码归属地数据库调用代码JSON返回示例: { “resultcode”:“200”, “reason”:“成功的返回”, “result”:{ “area”:“浙江省温州市平阳县”, “sex”:“男”, “birthday”:“1989年03月08日” } } 身份证号码归属地数据库调用代码XML返回示例: 200 成功的返回 浙江省温州市平阳县 1989年03月08日

第二篇:身份证相关信息

一、身份证号码执行标准:18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》。

GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称“社会保障号码”更名为“公民身份号码”,另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。

二、编码规则:公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码,可以用字母表示如为ABCDEFYYYYMMDDXXXR。其含义如下:

1.地址码(ABCDEF):表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。

2.出生日期码(YYYYMMDD):表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日分别用4位、2位(不足两位加0)、2(同上)位数字表示,之间不用分隔符。

3.顺序码(XXX):表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。

4.校验码(R),一位数字,通过前17位数字根据一定计算得出。

三、关于地址码含义的详细解释:

身份证前六位是地区代码,我们用ABCDEF表示。代码的解释规则如下:

A:国内区域

华北三省二市

东北三省

华东六省一市

华南六省

西南四省一市 6 西北五省

台湾

港澳

B(或者说是AB,就是前2位):省(直辖市,自治区,特别行政区)代码

按照A划定的分区定义省代码,有直辖市的,直辖市列前,其余按离直辖市的距离排序,没有直辖市的,按离北京的远近排序。

具体省(直辖市,自治区,特别行政区)代码如下:

11-15 京 津 冀 晋 蒙

21-23 辽 吉 黑

31-37 沪 苏 浙 皖 闽 赣 鲁

41-46 豫 鄂 湘 粤 桂 琼

50-54 渝 川 贵 云 藏

61-65 陕 甘 青 宁 新

81-82 港 澳

CD:城市代码

从01开始排,对于直辖市,CD=01表示市辖区,CD=02表示辖县;省的城市代码从省会开始排,比如2101=沈阳 2102=大连„„ 只有地级城市有独立的城市代码,县级市没有。

EF:市辖区、郊区、郊县、县级市代码

如果EF=00,指代这个城市,不特定区县;对于非直辖市,如EF=01,指代市辖区(任意一个区),02开始指代特定的区。

其中:

E=0代表市辖区,E=1代表郊区,E=2代表郊县,E=8代表县级市。

对于直辖市,从01开始就依次排区,没有市区和郊区的代码区分。:

有关更详细的资料见附录。

四、生日期码(YYYYMMDD)表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。例如:1981年05月11日就用19810511表示。

五、顺序码(XXX)(身份证第十五位到十七位)是县、区级政府所辖派出所的分配码,每个派出所分配码为10个连续号码,例如“000-009”或“060-069”,其中单数为男性分配码,双数为女性分配码,如遇同年同月同日有两人以上时顺延第二、第三、第四、第五个分配码。如:007的就是个男生,而且和他同年月日生的男生至少有两个,他们的后四位是001*和003*。分配顺序码中“999、998、997、996”四个顺序号分别为男女性百岁以上老人专用的特定编号。

六、关于校验码

校验码是通过一系列数学计算得出来的,具体校验的计算方式如下:

1.对前17位数字本体码加权求和

公式为:S = Sum(Ai * Wi), i = 0,..., 16

其中Ai表示第i位置上的身份证号码数字值,Wi表示第i位置上的加权因子,其各位对应的值依次为: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

通俗解释:身份证第一位数字X7+第二位X9+第三位X10+第四位X5+第五位X5+第六位X8+第七位X4+第八位X1+第九位X6+第十位X3+十一位X7+十二位X9+十三位X10+十四位X5+十五位X8+十六位X4+十七位X2;计算出总和(用S)表示。2.以11对计算结果取模

Y = mod(S, 11)

通俗解释:用S除以11,看最后的余数。如果除尽,为0;余数为1,则计为1;最大余数为10;全部数字为0-10共11个数字。(用Y表示)。

3.根据模的值得到对应的校验码

对应关系为:

Y值: 0 1 2 3 4 5 6 7 8 9 10

校验码: 1 0 X 9 8 7 6 5 4 3 2

通俗解释:余数为0,则校验码为1;依次类推:余数为1,则校验码对应0;以下:2--X;3--9;4--8;5--7;6--6;7--5;8--4;9-3;10-2。

如果校验码不符合这个规则,则肯定是假号码。

关于18位身份证号码尾数是“X”的一种解释:因为按照上面的规则,校验码有11个,而不是10个,所以不能用0-9表示。所以如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位,而19位的号码违反了国家标准,并且我国的计算机应用系统也不承认19位的身份证号码。Ⅹ是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。

根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

第三篇:中国公安网身份证查询

中国公安网身份证查询

同步的问题,公安网要比其 他外部网更快的更新公民 个人资料,是税务局的资料 库还没有和公安网的资料 库同步好。保险起见,过一 个星期应该好了。快的话也 要两天 补充:户籍警一般都这样,女警更是很傻很天真。不过 你的户口在哪,要开证明的 话就要在哪个派出所开的,如果你户籍就在你就近的 派出所,肯定能查到的,只 是别再让那个女警查了。如 果没有,那只有等了,真的 没别的办法的,让你老板看 看能不能换个人想办法去 税务上办事情。同步的速度 可能会慢,这个没办法的,效率就这么高

第四篇:java实现二代身份证信息查询程序

本文是在java平台上编写的二代身份证信息查询程序,可以查询二代身份证的基本信息,包括文字信息和图像信息。用到的Jar包是JNative.jar,这个很容易就能下载到,下载后添加到工程的外部jar库中。另外,程序装载了sdtapi.DLL和WltRS.DLL文件,这两个文件必须放到C:WindowsSystem32目录下。只有一个java文件,需要说明的是:用到的测试设备接口是RS232串口,USB的接口程序可自行修改。资料是在网上用积分买的,现免费共享给手上没有积分的朋友下载。

package com.a;

import javax.swing.*;import org.xvolks.jnative.JNative;import org.xvolks.jnative.Type;import org.xvolks.jnative.exceptions.NativeException;import org.xvolks.jnative.pointers.Pointer;import org.xvolks.jnative.pointers.memory.MemoryBlockFactory;import java.awt.*;import javax.imageio.ImageIO;import java.io.*;import java.util.StringTokenizer;import java.awt.event.*;

public class IdentityInfoReader extends JFrame implements ActionListener { private static final long serialVersionUID =-***8441L;JLabel[] label = new JLabel[10];JButton showBmp;JTextField[] text = new JTextField[9];String[] labelItem = {“姓名:”, “性别:”, “民族:”, “出生年月:”, “地址:”, “身份证号:”, “签发机构:”, “期限起始:”, “期限终止:”};JNative openJN = null, findJN = null, selectJN = null, readJN = null, MngJN = null, BmpJN = null, closeJN = null;JButton readJB, exitJB;int iPort = 1;int iIfOpen = 1;

public InformationReader(String str){

super(str);

System.loadLibrary(“sdtapi”);

try {

try {

init();

} catch(NativeException e){

} catch(UnsupportedEncodingException e){

e.printStackTrace();

}

} catch(IllegalAccessException e){

}

label[0] = new JLabel(“二代身份证信息”);

label[0].setBounds(200, 20, 95, 25);

getContentPane().add(label[0]);

for(int j = 1;j < labelItem.length + 1;j++){

label[j] = new JLabel(labelItem[j1]);} text[0].setText(Info[0]);if(Info[1].charAt(0)== '1'){ text[1].setText(“男”);} else if(Info[1].charAt(0)== '2')text[1].setText(“女”);char[] nationChar = new char[2];Info[1].getChars(1, 3, nationChar, 0);String nationStr = “";nationStr = String.valueOf(nationChar);if(nationStr.equals(”01“))text[2].setText(”汉“);else if(nationStr.equals(”02“))text[2].setText(”蒙古族“);else if(nationStr.equals(”03“))text[2].setText(”回族“);else if(nationStr.equals(”04“))text[2].setText(”藏族“);else if(nationStr.equals(”05“))text[2].setText(”维吾尔族“);else if(nationStr.equals(”06“))text[2].setText(”苗族“);else if(nationStr.equals(”07“))text[2].setText(”彝族“);else if(nationStr.equals(”08“))text[2].setText(”壮族“);else if(nationStr.equals(”09“))text[2].setText(”布依族“);else if(nationStr.equals(”10“))text[2].setText(”朝鲜族“);else if(nationStr.equals(”11“))text[2].setText(”满族“);else if(nationStr.equals(”12“))text[2].setText(”侗族“);else if(nationStr.equals(”13“))text[2].setText(”瑶族“);else if(nationStr.equals(”14“))text[2].setText(”白族“);else if(nationStr.equals(”15“))text[2].setText(”土家族“);else if(nationStr.equals(”16“))text[2].setText(”哈尼族“);else if(nationStr.equals(”17“))text[2].setText(”哈萨克族“);else if(nationStr.equals(”18“))text[2].setText(”傣族“);else if(nationStr.equals(”19“))text[2].setText(”黎族“);

else if(nationStr.equals(”20“))text[2].setText(”傈僳族“);else if(nationStr.equals(”21“))text[2].setText(”佤族“);else if(nationStr.equals(”22“))text[2].setText(”畲族“);else if(nationStr.equals(”23“))text[2].setText(”高山族“);else if(nationStr.equals(”24“))text[2].setText(”拉祜族“);else if(nationStr.equals(”25“))text[2].setText(”水族“);else if(nationStr.equals(”26“))text[2].setText(”东乡族“);else if(nationStr.equals(”27“))text[2].setText(”纳西族“);else if(nationStr.equals(”28“))text[2].setText(”景颇族“);else if(nationStr.equals(”29“))text[2].setText(”柯尔克孜族“);else if(nationStr.equals(”30“))text[2].setText(”土族“);else if(nationStr.equals(”31“))text[2].setText(”达翰尔族“);else if(nationStr.equals(”32“))text[2].setText(”仫佬族“);else if(nationStr.equals(”33“))text[2].setText(”羌族“);else if(nationStr.equals(”34“))text[2].setText(”布朗族“);else if(nationStr.equals(”35“))text[2].setText(”撒拉族“);else if(nationStr.equals(”36“))text[2].setText(”毛南族“);else if(nationStr.equals(”37“))text[2].setText(”仡佬族“);else if(nationStr.equals(”38“))text[2].setText(”锡伯族“);else if(nationStr.equals(”39“))text[2].setText(”阿昌族“);else if(nationStr.equals(”40“))text[2].setText(”普米族“);else if(nationStr.equals(”41“))text[2].setText(”哈萨克族“);else if(nationStr.equals(”42“))text[2].setText(”怒族“);else if(nationStr.equals(”43“))text[2].setText(”乌孜别克族“);else if(nationStr.equals(”44“))text[2].setText(”俄罗斯族“);else if(nationStr.equals(”45“))text[2].setText(”鄂温克族“);else if(nationStr.equals(”46“))

text[2].setText(”德昂族“);

else if(nationStr.equals(”47“))

text[2].setText(”保安族“);

else if(nationStr.equals(”48“))

text[2].setText(”裕固族“);

else if(nationStr.equals(”49“))

text[2].setText(”京族“);

else if(nationStr.equals(”50“))

text[2].setText(”塔塔尔族“);

else if(nationStr.equals(”51“))

text[2].setText(”独龙族“);

else if(nationStr.equals(”52“))

text[2].setText(”鄂伦春族“);

else if(nationStr.equals(”53“))

text[2].setText(”赫哲族“);

else if(nationStr.equals(”54“))

text[2].setText(”门巴族“);

else if(nationStr.equals(”55“))

text[2].setText(”珞巴族“);

else if(nationStr.equals(”56“))

text[2].setText(”基诺族“);

else if(nationStr.equals(”57“))

text[2].setText(”其它“);

else if(nationStr.equals(”98“))

text[2].setText(”外国人入籍“);

String BirthyearStr = ”“;

char[] BirthyearChar = new char[4];

Info[1].getChars(3, 7, BirthyearChar, 0);

BirthyearStr = String.valueOf(BirthyearChar);

String BirthmonthStr = ”“;

char[] BirthmonthChar = new char[2];

Info[1].getChars(7, 9, BirthmonthChar, 0);

BirthmonthStr = String.valueOf(BirthmonthChar);

String BirthdateStr = ”“;

char[] BirthdateChar = new char[2];

Info[1].getChars(9, 11, BirthdateChar, 0);

BirthdateStr = String.valueOf(BirthdateChar);

text[3].setText(BirthyearStr + ”年“ + BirthmonthStr + ”月“ + BirthdateStr + ”日“);

char[] addressChar = new char[Info[1].length()18];

Info[2].getChars(18, Info[2].length(), issueChar, 0);

String issueStr = ”“;

issueStr = String.valueOf(issueChar);

text[6].setText(issueStr);

char[] startyearChar = new char[4];

Info[3].getChars(0, 4, startyearChar, 0);

String startyearStr = ”“;

startyearStr = String.valueOf(startyearChar);

char[] startmonthChar = new char[2];

Info[3].getChars(4, 6, startmonthChar, 0);

String startmonthStr = ”“;

startmonthStr = String.valueOf(startmonthChar);

char[] startdateChar = new char[2];

Info[3].getChars(6, 8, startdateChar, 0);

String startdateStr = ”“;

startdateStr = String.valueOf(startdateChar);

text[7].setText(startyearStr + ”年“ + startmonthStr + ”月“ + startdateStr + ”日“);

char[] endyearChar = new char[4];

Info[3].getChars(8, 12, endyearChar, 0);

String endyearStr = ”“;

endyearStr = String.valueOf(endyearChar);

char[] endmonthChar = new char[2];

Info[3].getChars(12, 14, endmonthChar, 0);

String endmonthStr = ”“;

endmonthStr = String.valueOf(endmonthChar);

char[] enddateChar = new char[2];

Info[3].getChars(14, 16, enddateChar, 0);

String enddateStr = ”“;

enddateStr = String.valueOf(enddateChar);

text[8].setText(endyearStr + ”年“ + endmonthStr + ”月“ + enddateStr + ”日“);

int count1 = d.getSize();

byte[] byteArray1 = new byte[count1];

for(i = 0;i < count1;i++)

byteArray1[i] = c.getAsByte(i);

try {

File myFile = new File(”zp.wlt“);

FileOutputStream out = new FileOutputStream(myFile);

out.write(byteArray1, 0, count1-1);

} catch(IOException t){

}

closeJN.invoke();

// System.out.println(closeJN.getRetVal());

int l = 0;

System.loadLibrary(”WltRS“);

BmpJN = new JNative(”WltRS“, ”GetBmp“);

BmpJN.setRetVal(Type.INT);

BmpJN.setParameter(l++, ”zp.wlt“);

BmpJN.setParameter(l++, 1);

BmpJN.invoke();

if(readJN.getRetVal().equals(”144“))

System.out.println(”相片解码成功!“);

else

System.out.println(”相片解码不成功!“);

Image image = null;

try {

image = ImageIO.read(new File(”zp.bmp“));

} catch(IOException ex){

}

ImageIcon icon = new ImageIcon(image);

showBmp.setIcon(icon);

getContentPane().add(showBmp);

setVisible(true);

a.dispose();

b.dispose();

c.dispose();

d.dispose();

e.dispose();

} catch(NativeException e){

} catch(UnsupportedEncodingException e){

e.printStackTrace();

}

} catch(IllegalAccessException e){

} }

public static void main(String agrs[]){

InformationReader informationReader = new InformationReader(”二代身份证信息读取");

informationReader.setSize(500, 500);} }

第五篇:身份证信息获取函数

、根据身份证号码求性别:=IF(LEN(B2)=15,IF(MOD(VALUE(RIGHT(B2,3)),2)=0,“女”,“男”),IF(LEN(B2)=18,IF(MOD(VALUE(MID(B2,15,3)),2)=0,“女”,“男”),“身份证错”))

2、根据身份证号码求出生年月:=IF(LEN(B2)=15,CONCATENATE(“19”,MID(B2,7,2),“.”,MID(B2,9,2)),IF(LEN(B2)=18,CONCATENATE(MID(B2,7,4),“.”,MID(B2,11,2)),“身份证错”))

3、根据身份证号码求年龄:=IF(LEN(B2)=15,year(now())-1900-VALUE(MID(B2,7,2)),if(LEN(B2)=18,year(now())-VALUE(MID(B2,7,4)),“身份证错”))

一、分析身份证号码

其实,身份证号码与一个人的性别、出生年月、籍贯等信息是紧密相连的,无论是15位还是18位的身份证号码,其中都保存了相关的个人信息。

15位身份证号码:第7、8位为出生年份(两位数),第9、10位为出生月份,第11、12位代表出生日期,第15位代表性别,奇数为男,偶数为女。

18位身份证号码:第7、8、9、10位为出生年份(四位数),第11、第12位为出生月份,第13、14位代表出生日期,第17位代表性别,奇数为男,偶数为女。

例如,某员工的身份证号码(15位)是***,那么表示1972年8月7日出生,性别为女。如果能想办法从这些身份证号码中将上述个人信息提取出来,不仅快速简便,而且不容易出错,核对时也只需要对身份证号码进行检查,肯定可以大大提高工作效率。

二、提取个人信息

这里,我们需要使用IF、LEN、MOD、MID、DATE等函数从身份证号码中提取个人信息。如图1所示,其中员工的身份证号码信息已输入完毕(C列),出生年月信息填写在D列,性别信息填写在B列。

1.提取出生年月信息

由于上交报表时只需要填写出生年月,不需要填写出生日期,因此这里我们只需要关心身份证号码的相应部位即可,即显示为“7208”这样的信息。在D2单元格中输入公式“=IF(LEN(C2)=15,MID(C2,7,4),MID(C2,9,4))”,其中:

LEN(C2)=15:检查C2单元格中字符串的字符数目,本例的含义是检查身份证号码的长度是否是15位。

MID(C2,7,4):从C2单元格中字符串的第7位开始提取四位数字,本例中表示提取15位身份证号码的第7、8、9、10位数字。

=MID(F2,7,4)&“-”&MID(F2,11,2)&“-”&MID(F2,13,2)

MID(C2,9,4):从C2单元格中字符串的第9位开始提取四位数字,本例中表示提取18位身份证号码的第9、10、11、12位数字。

IF(LEN(C2)=15,MID(C2,7,4),MID(C2,9,4)):IF是一个逻辑判断函数,表示如果C2单元格是15位,则提取第7位开始的四位数字,如果不是15位则提取自第9位开始的四位数字。

如果需要显示为“70年12月”这样的格式,请使用DATE格式,并在“单元格格式→日期”中进行设置。

2.提取性别信息

由于报表中各位员工的序号编排是按照上级核定的编制进行的,因此不可能按照男、女固定的顺序进行编排,如果一个一个手工输入的话,既麻烦又容易出错例如性别信息统一在B列填写,可以在B2单元格中输入公式

“=IF(MOD(IF(LEN(F2)=15,MID(F2,15,1),MID(F2,17,1)),2)=1,“男”,“女”)”,其中:

LEN(C2)=15:检查身份证号码的长度是否是15位。

MID(C2,15,1):如果身份证号码的长度是15位,那么提取第15位的数字。

MID(C2,17,1):如果身份证号码的长度不是15位,即18位身份证号码,那么应该提取第17位的数字。

MOD(IF(LEN(C2)=15,MID(C2,15,1),MID(C2,17,1)),2):用于得到给出数字除以指定数字后的余数,本例表示对提出来的数值除以2以后所得到的余数。

IF(MOD(IF(LEN(C2)=15,MID(C2,15,1),MID(C2,17,1)),2)=1,“男”,“女”):如果除以2以后的余数是1,那么B2单元格显示为“男”,否则显示为“女”。

下载身份证信息查询接口 查询身份证具体信息word格式文档
下载身份证信息查询接口 查询身份证具体信息.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    证券接口 证券编码及基本上市信息查询(本站推荐)

    证券接口 证券编码及基本上市信息查询 证券接口调用代码,可输入一个或多个证券交易代码,获取证券ID,证券在数据结构中的一个唯一识别的编码;同时可以获取输入证券的基本上市信息......

    身份证信息修改办理说明

    身份证信息修改办理说明 1、情况说明(单位盖章、申请人签字、建设局盖章) 2、派出所证明并写明新旧身份证的关系(仅后缀码错误的不提交此项) 3、资格证明原件、复印件(临时和建造......

    信息查询 申请书(镇)

    信息查询申请书 申请人:河南省濮阳县柳屯镇周村12户村民。 代表人:周庆雪, 男,汉族,1954年9月7日出生,住河南省濮阳县柳屯镇周村001号。电话:*** 代表人:王连海,男,汉族,1955年......

    住房信息查询授权委托书

    住房信息查询授权委托书 委托人:________(身份证号码:__________________________) 受托人:________(身份证号码:__________________________) 人因办理(银行贷款□、契税优惠......

    企业信用信息查询授权书

    企业信用信息基础数据库查询授权书 人民银行简阳支行: 我公司因贷款业务需要,现授权吴平同志在申报贷款过程中,可以通过中国人民银行企业信用信息基础数据库查询我公司信用信息......

    企业信用信息查询授权书

    xxxx企业信用信息查询授权书 尊敬的客户:为了维护您的权益,请在签署本授权书前,仔细阅读本授权书各条款(特别是黑体字条款),关注您的权利、义务。 xxxx股份有限公司: 本单位(授权单......

    信息查询实习报告

    《现代信息查询与利用》实习报告 姓 名: 蒋毅 学 号: 20135280 专业班级:食品1304 电 话:*** 指导老师:周 晓 蓉 成 绩: 第一次 1.1 课题名称:核电厂含铬废水处理1.2......

    如何查询律师事务所登记信息

    查询律师事务所登记信息 1. 到该律师事务所注册的律协或司法局查; 2. 网络查询。登陆该律师事务所注册的所属省或所属市律师协会、所属省或所属市司法局官网、所属省或所属市......