Thank you for this explanation. Glad to hear its just a combination of a bug with the idea that apparently, it is not your responsibility to check false positives yourself.
Sorry if I ruined your mood. This was not meant as a personal attack.
This all basically boils down to false positives. As I was working on a simple comment-bot downvoting away-bot (an away bot is a simple bot that activates only then voting strength exceeds an 'away' threshold and then tries to use the available voting power for constructive downvotes, without actually flagging anything, just vote attenuation), started showing up as false positive.
You might have noticed in your log, about three or four weeks ago, was matching hundreds of posts to a single URL, and the result was that , 1st,
was marked as a potential comment bot. I had a threshold of 100 times the same post for marking a bot, and then of two for marking comments by that potential bot, and by pure chance, at that time, cheetah's comment on my own posts started to get matched.
When I collect posts over three weeks that refer to steemit posts as similar content, print out the page author and the link, then run the following command on them:
- ./cheetah_whitelist_candydates-2.py |sort|uniq -c|grep -v " 1 "|grep -v " 2 "|sort -rn
I get the following results
- 15
life/@morad1/4xznep-life
- 12
voting/@croupierbot/croupierbot-watching-the-watchers-2017-12-15
- 11
iota/@bitgeek/iota-price-forecast---28th-november
- 9
life/@morad1/4xznep-life
- 8
introducemyself/@taministy/the-follow-me-in-steemit-report-of-15-09-2017
- 7
steembloggers/@blockgators/steembloggers-post-recognition-12-15-17
- 6
life/@morad1/4xznep-life
- 3
investing/@fredinjapan64/silver-wheaton-nyse-slw-1508673307-0747676
- 3
life/@morad1/4xznep-life
I'dd invite you to go find these in your logs and see how many aren't false positives.
Maybe it's because I'm coming at this from a different angle, but due to how trivial it was to identify, this made me jump to the premature conclusion that the whitelist wasn't being actively maintained anymore.
As for python code, I'm not sure how helpfull it will be, but I'll past my two scripts I used to gather this info below:
class WhitelistCandidateFinder:
def __init__(self):
self.hourcount = 0
self.start = time.time()
self.hashcount = dict()
self.whitelist_candidates = set()
self.log = open("cheetah.log","w")
def comment(self,tm,event,cont):
if "author" in event and event["author"] == "cheetah" and "body" in event and "parent_author" in event:
if "I found similar content that readers might be interested in" in event["body"] and "://steemit.com/" in event["body"]:
candidate = "@"+event["parent_author"]+" " + event["parent_permlink"]
old = event["body"].split("://steemit.com/")[1]
self.log.write(str(self.hourcount)+" "+candidate+" "+old+"\n")
self.log.flush()
def hour(self,tm,event,cont):
self.hourcount = self.hourcount + 1
now = time.time()
total_duration = str(timedelta(seconds=now-self.start))
print colored("* HOUR mark: Processed "+str(self.hourcount)+ " blockchain hours in "+ total_duration,"green")
if self.hourcount == 21*24:
print "Ending eventloop"
print "===== Whitelist candidates ======="
for candidate in self.whitelist_candidates:
print " * ",candidate
print "=================================="
reactor.stop()
bc = ActiveBlockChain(reactor,rewind_days=21,parallel = 8)
tb = WhitelistCandidateFinder()
bc.register_bot(tb,"whitelistcandidatefinder")
bc.start()
reactor.run()
And a trivial second script:
with open("cheetah.log") as logfile:
for line in logfile:
parts = line.split()
if len(parts) ==4:
parts[3].replace(parts[1],"@ACCOUNTNAME")
print parts[1],parts[3]
I hope the above is useful and again, sorry if my post has upset you, but I hope that knowing the angle that I came from at this, you understand how these observations made me question if indeed my away-bot false positive for were indeed false positives.
RE: Has the @cheetah bot turned into yet an other comment bot style scam?