Serposcope 2 : new free and open source rank tracker

pierz

Registered Member
Joined
Nov 9, 2009
Messages
58
Reaction score
65
Today I release the version 2 of serposcope, a free and open-source rank checker.

rank-checker-overview.jpg competitor-tracking.jpg keyword-ranking-changes.jpg keyword-positions-website.jpg

Here is a short list of the main features :

- Open Source
- Unlimited keywords and websites
- Competitor tracking
- Local & mobile & custom search
- User account management
- Proxy and Captcha support
- Run on a desktop PC or a server
- Support Windows/Mac OSX/Linux

You can download it on https://serposcope.serphacker.com/en/ or get the source on the github repo.

I'm waiting for your feedback or available if you need assistance :D

FYI I introduced the v1 on blackhatworld more than 2 years ago.
 
Looks nice, are you making it as a hobby or more serious project?
 
Cocoricooooo !!! :-) A wonderfull tool from the most wonderfull country ;-)

I am using it for a couple of days and it will probably replace my AWR I was using until now.

Thanks for the good job !!!
 
This looks like a really nice tool with clean UI.
Will give it a try.
Cheers
 
I've been waiting free rank tracker tool so long.
I will try it soon.
Thanks
 
Hey. I've just installed it, configured and started running my first search. Everything works great so far. I also like the Bootstrap UI - keep up the good work! Thanks!
 
Thanks for the free tool but it does not support free blog sites such as blogger/blogspot; and https sites. Hoping to see these in the next updates
 
Thanks for the free tool but it does not support free blog sites such as blogger/blogspot; and https sites. Hoping to see these in the next updates

No sammylove, it supports any website, you can track a domain, all subdomains of a domain, a specific URL and even a regular expression pattern so there is no limit in target tracking. It detects any protocol too so if the website is ranked using http:// or https:// or even ftp:// serposcope will find it. I answered the posts you created on https://forum.serphacker.com/
 
Last edited:
The Java JAR file "serposcope-2.0.0.jar" could not be launched. I got this error message on OS X 10.11.3 (15D13b). Checked the support page no answer to this. What might be the problem?

Thanks
 
it's a useful share! thank you, i wasn't expecting that.
 
Thanks a lot for great contribution. Btw does it have or will you add bing/yahoo tracking too?
 
getting error, if you have any solution let me know.

Code:
Mac:~ Awesomeness$ java -jar serposcope.jar
starting serposcope service
[2016-01-26 19:49:06,854] [NinjaJetty] INFO  c.SerposcopeConf - serposcope.version          : 2.1.0
[2016-01-26 19:49:06,856] [NinjaJetty] INFO  c.SerposcopeConf - serposcope.datadir          : /Users/Awesomeness/serposcope
[2016-01-26 19:49:06,856] [NinjaJetty] INFO  c.SerposcopeConf - serposcope.logdir           : /Users/Awesomeness/serposcope/logs
[2016-01-26 19:49:06,856] [NinjaJetty] INFO  c.SerposcopeConf - serposcope.db.url           : jdbc:h2:/Users/Awesomeness/serposcope/db;MODE=MySQL
[2016-01-26 19:49:06,856] [NinjaJetty] INFO  c.SerposcopeConf - serposcope.db.debug         : false
[2016-01-26 19:49:06,856] [NinjaJetty] INFO  c.SerposcopeConf - serposcope.listenAddress    : 0.0.0.0
[2016-01-26 19:49:06,856] [NinjaJetty] INFO  c.SerposcopeConf - serposcope.listenPort       : 7134
[2016-01-26 19:49:06,902] [NinjaJetty] WARN  o.e.j.s.h.ContextHandler - Empty contextPath
[2016-01-26 19:49:06,916] [NinjaJetty] INFO  s.l.MyNinjaJetty - Trying to start jetty vnull on 0.0.0.0:7134
[2016-01-26 19:49:07,150] [NinjaJetty] INFO  c.Module - now logging to /Users/Awesomeness/serposcope/logs/2016-01-26.log
Can't establish connection to database
org.h2.jdbc.JdbcSQLException: Database may be already in use: null. Possible solutions: close all other connection(s); use the server mode [90020-189]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
    at org.h2.message.DbException.get(DbException.java:168)
    at org.h2.mvstore.db.MVTableEngine$Store.convertIllegalStateException(MVTableEngine.java:187)
    at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:167)
    at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:99)
    at org.h2.engine.Database.getPageStore(Database.java:2450)
    at org.h2.engine.Database.open(Database.java:672)
    at org.h2.engine.Database.openDatabase(Database.java:269)
    at org.h2.engine.Database.<init>(Database.java:263)
    at org.h2.engine.Engine.openSession(Engine.java:65)
    at org.h2.engine.Engine.openSession(Engine.java:175)
    at org.h2.engine.Engine.createSessionAndValidate(Engine.java:153)
    at org.h2.engine.Engine.createSession(Engine.java:136)
    at org.h2.engine.Engine.createSession(Engine.java:28)
    at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:349)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:107)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:91)
    at org.h2.Driver.connect(Driver.java:72)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:270)
    at com.serphacker.serposcope.di.db.DataSourceProvider.get(DataSourceProvider.java:40)
    at com.serphacker.serposcope.di.db.DataSourceProvider.get(DataSourceProvider.java:21)
    at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
    at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:53)
    at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
    at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45)
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
    at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:205)
    at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:199)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
    at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:199)
    at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180)
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
    at com.google.inject.Guice.createInjector(Guice.java:96)
    at ninja.Bootstrap.initInjector(Bootstrap.java:204)
    at ninja.Bootstrap.boot(Bootstrap.java:94)
    at ninja.servlet.NinjaServletListener.createNinjaBootstrap(NinjaServletListener.java:131)
    at ninja.servlet.NinjaServletListener.getInjector(NinjaServletListener.java:109)
    at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:47)
    at ninja.servlet.NinjaServletListener.contextInitialized(NinjaServletListener.java:61)
    at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:800)
    at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:444)
    at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:791)
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:294)
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
    at org.eclipse.jetty.server.Server.start(Server.java:387)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
    at org.eclipse.jetty.server.Server.doStart(Server.java:354)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at ninja.standalone.NinjaJetty.doStart(NinjaJetty.java:107)
    at ninja.standalone.AbstractStandalone.start(AbstractStandalone.java:166)
    at ninja.standalone.AbstractStandalone.run(AbstractStandalone.java:87)
    at serposcope.lifecycle.Daemon.start(Daemon.java:19)
    at serposcope.lifecycle.Daemon.main(Daemon.java:15)
Caused by: java.lang.IllegalStateException: The file is locked: nio:/Users/Awesomeness/serposcope/db.mv.db [1.4.189/7]
    at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:773)
    at org.h2.mvstore.FileStore.open(FileStore.java:172)
    at org.h2.mvstore.MVStore.<init>(MVStore.java:342)
    at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2884)
    at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:154)
    ... 57 more
Mac:~ Awesomeness$ java -Dserposcope.conf=/path/to/serposcope.conf -jar serposcope.jar
starting serposcope service
[2016-01-26 19:53:24,144] [NinjaJetty] INFO  c.SerposcopeConf - serposcope.version          : 2.1.0
[2016-01-26 19:53:24,146] [NinjaJetty] INFO  c.SerposcopeConf - serposcope.datadir          : /Users/Awesomeness/serposcope
[2016-01-26 19:53:24,146] [NinjaJetty] INFO  c.SerposcopeConf - serposcope.logdir           : /Users/Awesomeness/serposcope/logs
[2016-01-26 19:53:24,146] [NinjaJetty] INFO  c.SerposcopeConf - serposcope.db.url           : jdbc:h2:/Users/Awesomeness/serposcope/db;MODE=MySQL
[2016-01-26 19:53:24,146] [NinjaJetty] INFO  c.SerposcopeConf - serposcope.db.debug         : false
[2016-01-26 19:53:24,146] [NinjaJetty] INFO  c.SerposcopeConf - serposcope.listenAddress    : 0.0.0.0
[2016-01-26 19:53:24,146] [NinjaJetty] INFO  c.SerposcopeConf - serposcope.listenPort       : 7134
[2016-01-26 19:53:24,199] [NinjaJetty] WARN  o.e.j.s.h.ContextHandler - Empty contextPath
[2016-01-26 19:53:24,215] [NinjaJetty] INFO  s.l.MyNinjaJetty - Trying to start jetty vnull on 0.0.0.0:7134
[2016-01-26 19:53:24,456] [NinjaJetty] INFO  c.Module - now logging to /Users/Awesomeness/serposcope/logs/2016-01-26.log
Can't establish connection to database
org.h2.jdbc.JdbcSQLException: Database may be already in use: null. Possible solutions: close all other connection(s); use the server mode [90020-189]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
    at org.h2.message.DbException.get(DbException.java:168)
    at org.h2.mvstore.db.MVTableEngine$Store.convertIllegalStateException(MVTableEngine.java:187)
    at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:167)
    at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:99)
    at org.h2.engine.Database.getPageStore(Database.java:2450)
    at org.h2.engine.Database.open(Database.java:672)
    at org.h2.engine.Database.openDatabase(Database.java:269)
    at org.h2.engine.Database.<init>(Database.java:263)
    at org.h2.engine.Engine.openSession(Engine.java:65)
    at org.h2.engine.Engine.openSession(Engine.java:175)
    at org.h2.engine.Engine.createSessionAndValidate(Engine.java:153)
    at org.h2.engine.Engine.createSession(Engine.java:136)
    at org.h2.engine.Engine.createSession(Engine.java:28)
    at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:349)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:107)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:91)
    at org.h2.Driver.connect(Driver.java:72)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:270)
    at com.serphacker.serposcope.di.db.DataSourceProvider.get(DataSourceProvider.java:40)
    at com.serphacker.serposcope.di.db.DataSourceProvider.get(DataSourceProvider.java:21)
    at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
    at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:53)
    at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
    at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45)
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
    at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:205)
    at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:199)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
    at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:199)
    at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180)
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
    at com.google.inject.Guice.createInjector(Guice.java:96)
    at ninja.Bootstrap.initInjector(Bootstrap.java:204)
    at ninja.Bootstrap.boot(Bootstrap.java:94)
    at ninja.servlet.NinjaServletListener.createNinjaBootstrap(NinjaServletListener.java:131)
    at ninja.servlet.NinjaServletListener.getInjector(NinjaServletListener.java:109)
    at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:47)
    at ninja.servlet.NinjaServletListener.contextInitialized(NinjaServletListener.java:61)
    at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:800)
    at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:444)
    at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:791)
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:294)
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
    at org.eclipse.jetty.server.Server.start(Server.java:387)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
    at org.eclipse.jetty.server.Server.doStart(Server.java:354)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at ninja.standalone.NinjaJetty.doStart(NinjaJetty.java:107)
    at ninja.standalone.AbstractStandalone.start(AbstractStandalone.java:166)
    at ninja.standalone.AbstractStandalone.run(AbstractStandalone.java:87)
    at serposcope.lifecycle.Daemon.start(Daemon.java:19)
    at serposcope.lifecycle.Daemon.main(Daemon.java:15)
Caused by: java.lang.IllegalStateException: The file is locked: nio:/Users/Awesomeness/serposcope/db.mv.db [1.4.189/7]
    at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:773)
    at org.h2.mvstore.FileStore.open(FileStore.java:172)
    at org.h2.mvstore.MVStore.<init>(MVStore.java:342)
    at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2884)
    at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:154)
    ... 57 more
 
This is a very good rank tracker. I've tried various rank tracker from saas to program based, and first time i've seen a self hosted one and free. At first try, it beats everything out there in terms of interface loading speed and functionality, coupled with it being able to track unlimited kw with max depth, and the one I like the most is you can add any amount of domain in the same project.

What it fails to, is very similar to a rank tracker that i've bought recently (talk about a waste of hard earned money). It left footprint all over and faced a ip ban (which is actually a bot ban). The explanation I can give is, the ban occurs because google detected the bot doing what a bot does and ban that. If you were to open your own browser, you will realize that your IP isn't actually blocked.

What's good about serpscope that it will automatically stop the task if you don't have captcha. And you get to see the logs where it fails, and why it fails. Very important when using a self hosted solution, what more an open source which means no support, so you need to know everything that's going on behind the scene.

There are alot more things I can say about, but ultimately for me the ban is the only thing putting me off. None of the self hosted, self installed program, have managed to solve this. If you can solve and improve on that, this will really be the best rank tracker out there.
 
Back
Top