131 lines
3.8 KiB
Vue
131 lines
3.8 KiB
Vue
<template>
|
||
<div class="identification_page">
|
||
<div>序号:<input v-model="setId" type="text" autofocus /></div>
|
||
<div>密钥:<input type="text" /></div>
|
||
<div class="button" @click="setFingerprint2('set')">记录浏览器标识</div>
|
||
<div class="button" @click="setFingerprint2('put')">更新浏览器标识</div>
|
||
<div class="button" @click="setFingerprint2('delete')">注销浏览器标识</div>
|
||
</div>
|
||
</template>
|
||
<script lang="ts">
|
||
import { defineComponent, ref, createVNode, computed } from "vue";
|
||
import { setCookie, getCookie, WriteCookie } from "@/tool/cookie";
|
||
import HeaderComponent from "@/component/HomePage/Header.vue";
|
||
import HistoryDetail from "@/component/Detail/HistoryDetail.vue";
|
||
import router from "@/router/index";
|
||
import { Https } from "@/tool/https";
|
||
import { Modal, message } from "ant-design-vue";
|
||
import RobotAssist from "@/component/HomePage/RobotAssist.vue";
|
||
import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
|
||
import { useI18n } from "vue-i18n";
|
||
import Fingerprint2 from "fingerprintjs2"; //获取浏览器唯一标识
|
||
export default defineComponent({
|
||
components: {
|
||
HeaderComponent,
|
||
HistoryDetail,
|
||
RobotAssist,
|
||
},
|
||
setup() {
|
||
let collectionList: any = ref([]);
|
||
let userInfo: any = {};
|
||
let status: any = ref(0);
|
||
let voluntarily: any = ref(false);
|
||
let setId: any = ref();
|
||
return {
|
||
collectionList,
|
||
userInfo,
|
||
status,
|
||
voluntarily,
|
||
setId,
|
||
};
|
||
},
|
||
data() {
|
||
return {};
|
||
},
|
||
mounted() {
|
||
|
||
},
|
||
methods: {
|
||
async setFingerprint2(str:any) {
|
||
let murmur:any = ''
|
||
await new Promise((resolve,reject)=>{
|
||
Fingerprint2.get(function (components: any) {
|
||
const values = components.map(function (
|
||
component: any,
|
||
index: any
|
||
) {
|
||
if (index === 0) {
|
||
//把微信浏览器里UA的wifi或4G等网络替换成空,不然切换网络会ID不一样
|
||
return component.value.replace(/\bNetType\/\w+\b/, "");
|
||
}
|
||
return component.value;
|
||
});
|
||
// 生成最终id murmur
|
||
murmur = Fingerprint2.x64hash128(values.join(""), 31);
|
||
resolve('')
|
||
});
|
||
})
|
||
let data = {
|
||
browserIdentifiers:murmur,
|
||
id:this.setId
|
||
}
|
||
// console.log(data);
|
||
// return
|
||
|
||
if(str == 'set' || str == 'put'){
|
||
let url = Https.httpUrls.addNoLoginRequiredNew
|
||
if(str == 'put')url = Https.httpUrls.updateNoLoginRequiredNew
|
||
// return
|
||
Https.axiosPost(url, data)
|
||
.then((rv) => {
|
||
localStorage.setItem('murmurStr',murmur)
|
||
const htmlContent = rv
|
||
const blob = new Blob([htmlContent], { type: "text/html" });
|
||
const downloadLink = document.createElement("a");
|
||
downloadLink.href = URL.createObjectURL(blob);
|
||
downloadLink.download = "AiDA.html";
|
||
downloadLink.click();
|
||
// localStorage.setItem('id',this.setId)
|
||
message.success('Created successfully');
|
||
})
|
||
.catch((res) => {
|
||
});
|
||
}else{
|
||
data.id = ''
|
||
Https.axiosPost(Https.httpUrls.deleteNoLoginRequiredNew, data)
|
||
.then((rv) => {
|
||
message.success('successfully delete');
|
||
localStorage.removeItem('murmurStr')
|
||
localStorage.removeItem('id')
|
||
setCookie("isMurmur", false);
|
||
WriteCookie("token");
|
||
})
|
||
.catch((res) => {
|
||
});
|
||
}
|
||
|
||
},
|
||
},
|
||
});
|
||
</script>
|
||
<style lang="less">
|
||
.identification_page {
|
||
margin-top: 200px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
input {
|
||
padding-left: 10px;
|
||
border: 2px solid rgba(0, 0, 0, 0.2);
|
||
border-radius: 10px;
|
||
margin-top: 20px;
|
||
}
|
||
.button {
|
||
margin-top: 20px;
|
||
border: 2px solid;
|
||
border-radius: 20px;
|
||
padding: 0 20px;
|
||
cursor: pointer;
|
||
}
|
||
}
|
||
</style> |