import * as React from 'react'; import { useEffect } from 'react'; import * as Bowser from 'bowser'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faCog } from '@fortawesome/free-solid-svg-icons'; import './App.css'; const updateDOM = (id, text) => { document.getElementById(id).innerHTML += text; }; const App = () => { // const [country, setCountry] = useState('US'); // const [flag, setFlag] = useState(false); useEffect(() => { fetch('http://ip-api.com/json') .then((response) => response.json()) .then((data) => { // setCountry(data.countryCode); // setFlag(true); updateDOM('ipAddress', data.query); updateDOM('country', data.country); updateDOM('region', data.regionName); updateDOM('city', data.city); updateDOM('zip', data.zip); updateDOM('provider', data.isp); }); const uaResult = Bowser.parse(navigator.userAgent); updateDOM('browser', uaResult.browser.name); updateDOM('browserVersion', uaResult.browser.version); updateDOM('browserEngine', uaResult.engine.name); updateDOM('os', `${uaResult.os.name} ${uaResult.os.versionName}`); updateDOM('language', navigator.language); updateDOM('timezone', Intl.DateTimeFormat().resolvedOptions().timeZone); updateDOM('cookies', navigator.cookieEnabled); updateDOM('java', navigator.javaEnabled()); updateDOM('dnt', navigator.doNotTrack ? 'true' : 'false'); // updateDOM('plugins', navigator.plugins); updateDOM('platform', uaResult.platform.type); updateDOM('screenSize', `${window.screen.width}x${window.screen.height}`); updateDOM('color', window.screen.colorDepth); navigator.getBattery().then((battery) => { updateDOM('batteryLevel', `${Math.round(battery.level * 100)}%`); updateDOM('batteryStatus', battery.charging ? 'Charging' : 'Not charging'); }); updateDOM('memory', `${navigator.deviceMemory}GB`); updateDOM('cores', navigator.hardwareConcurrency); const gl = document.createElement('canvas').getContext('webgl'); const ext = gl.getExtension('WEBGL_debug_renderer_info'); updateDOM('vendor', gl.getParameter(ext.UNMASKED_VENDOR_WEBGL)); updateDOM('renderer', gl.getParameter(ext.UNMASKED_RENDERER_WEBGL)); }, []); return (
{/* */}
Connection
Software
Hardware
IP address:
Country:
Region:
City:
Zip:
Provider:
Browser:
Browser version:
Browser engine:
Operating system:
Language:
Timezone:
Cookies enabled:
Java enabled:
DNT header enabled:
Platform:
Screen resolution:
Color Resolution:
Battery level:
Battery status:
Device memory:
# of CPU cores:
WebGL vendor:
WebGL renderer:
{/*
Plugins:{' '}
*/}
); }; export default App;