Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
org.udger.parser:udger-parser
Advanced tools
Local parser is very fast and accurate useragent string detection solution. Enables developers to locally install and integrate a highly-scalable product. We provide the detection of the devices (personal computer, tablet, Smart TV, Game console etc.), operating system and client SW type (browser, e-mail client etc.). It also provides information about IP addresses (Public proxies, VPN services, Tor exit nodes, Fake crawlers, Web scrapers .. etc.)
Udger java parser uses LRU cache for last N requests. The size of cache can be defined in constructor, default size is 10000 requests. Parser's performance is tuned continuously, currently it reaches following rates:
100.000 requests per second if LRU is hitted
Using the in memory DB option will even make it faster.
$ git clone https://github.com/udger/udger-java
$ cd udger-java/
$ maven package
Udger data is stored in SQLite database file. Udger-java connects to SqLite using JDBC driver. SQLiteJDBC jdbc driver is recommended. If you are using Maven2, add the following XML fragments into your pom.xml file:
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.8.11.2</version>
</dependency>
Example how to create UdgerParser from udger db file C:\work\udgerdb_v3.dat
(in Windows)
UdgerParser.ParserDbData parserDbData = new UdgerParser.ParserDbData("C:/work/udgerdb_v3.dat");
UdgerParser up = = new UdgerParser(parserDbData);
...
up.close();
and from a UNIX (Linux, Mac OS X, etc) udger db file /home/john/work/udgerdb_v3.dat
UdgerParser.ParserDbData parserDbData = new UdgerParser.ParserDbData("/home/john/work/udgerdb_v3.dat");
UdgerParser up = = new UdgerParser(parserDbData);
...
up.close();
UdgerParser implements Closeable interface, therefore it must be either opened in try (...)
statement or explicitly closed.
Since the SQLite connection creating is time consuming task, it is recommended to keep the UdgerParser's instances in
an instance pool. UdgerParser is not thread safe object, therefore it can't be used from multiple thread simultaneously.
Intention of class UdgerParser.ParserDbData
is to keep precalculated DB-specific data and then improve instantiation
of UdgerParser
. Using UdgerParser.ParserDbData
the Udger database can be switched in runtime.
The Udger client supports the SQLite DB transactions with the database being in memory. Enabling this feature will make the parser even faster to parse the user agents. Internally the client will re-create the Udger SQLite database from the file into the systems main memory and perform all transactions to it. Since this will require additional memory for operation, it needs to be used carefully with object pools. During pooling with multiple parsers in the pool, this feature will create a separate in memory DB for each new parser and have a single connection to it. This will further allow more concurrency since all connections (from all pooled parsers) now have their own copy of the database.
To enable in memory feature simply use the below constructor and pass inMemoryEnabled as true
. The internal LRU cache can be used by setting a size > 0 or disabled by passing 0 for the third argument.
Example:
UdgerParser.ParserDbData parserDbData = new UdgerParser.ParserDbData("/home/john/work/udgerdb_v3.dat");
UdgerParser up = new UdgerParser(parserDbData, true, 10000);
...
uo.close();
<dependency>
<groupId>org.udger.parser</groupId>
<artifactId>udger-parser</artifactId>
<version>1.1.1</version>
</dependency>
public class Sample {
public static void main(String[] args) {
UdgerParser.ParserDbData parserDbData = new UdgerParser.ParserDbData("/home/john/work/udgerdb_v3.dat");
try (UdgerParser up = new UdgerParser(parserDbData)) {
UdgerUaResult uaRet = up.parseUa("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9");
UdgerIpResult ipRet = up.parseIp("108.61.199.93");
} catch (SQLException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
The Udger.com Team (info@udger.com)
If you still use the previous format of the db (v1), you can use https://github.com/adhar1985/DIUASparser
FAQs
Parse user agent string or IP using udger sqlite DB
We found that org.udger.parser:udger-parser demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.