What's new:
Detection of "--- end of thread ---" comment not at end of comments thread any longer.
URLs of affected comments are published under topic "renzlulz/spam/debug" now, on
server test.mosquitto.org. I'm still finetuning the responses. Moving the comment to the end by deleting
and resending when lenzrulz added a comment, while removing it when another user comments is under evaluation. Because this feature is under test, response interval can be long and irregular.
This is essentially the prototype of a "hammer" mode, meant to automatically shift own
comments always to the bottom of comment thread, such as the "beware of lenzrulz" comment.
Noticed an interesting quirk with spam response posting: sometimes - mostly at around 10pm UTC -
are app and web server pages out of sync. This can result in tablets publishing a spam response,
while detector can't see those on web pages. Therefore detector instructs tablets to publish (another)
spam response. This may repeat until web pages are in sync with app again, which usually doesn't
take more than a few minutes. Though occasionally, this may take half an hour.
Autoresponse still uses two devices, but second device is now only called in case that first device
doesn't respond. Messages are now identical, you shouldn't be able to tell which one responded, unless
you look at the MQTT messages.
For those who wish to automatically respond to published lenzspam, here's the autoresponder code and setup.
Setup is outlined sufficiently detailed to enable anybody to set up his own autoresponder. Used code is published here too. Naturally, configuration is such that it is triggered by lenzrulz spam.
Case 1:
Minimal configuration, lowest bandwidth:
- an obsolete Android device
- Automagic (paid, about 3 €)
- an MQTT client with support for tasker event API (donation)
How it works:
The Android device, by virtue of the MQTT client, receives the lenzspam URL from a public MQTT broker, and triggers execution of an Automagic flow, which will do this:
- launch EveryCircuit with the received URL (new lenzspam, that is)
- insert a message text into the clipboard
- execute a script which synthesizes user interaction.
Case 2:
Full configuration (with own lenzspam detector)
Involved components are:
- A credit card sized single board computer, running Linux
- an obsolete Android tablet, with apps:
- EveryCircuit
- Automagic
- MQTT Client (optionally)
- an MQTT broker (optionally)
How it works:
Linux SBC runs a shell script as cronjob (periodic execution) which retrieves a specified number of publishing pages from EveryCircuit server. This are scanned for lenzspam. From newly detected spam is the URL extracted and transferred to an Android device.
The Android device picks up the URL and triggers execution of an Automagic flow, which will do this:
- launch EveryCircuit with the received URL (new lenzspam, that is)
- insert a message text into the clipboard
- execute a script which synthesizes user interaction.
Components:
SBC based lenzspam detector (bash script):
http://everycircuit.com/circuit/4962167141695488
cronjob for periodic execution of the above:
Link to cronjob goes here.
Android based Automagic flow and script for synthesizing user interaction:
http://everycircuit.com/circuit/5428512090226688
This flow, du to being an XML file, is a bit hard to read as text. It was generated as result of using the visual flow editor, part of Automagic. Such flows can be easily shared between devices, and I'll provide it by other means on request. Alternatively will I explain how interested parties can put it together themselves, which is easy to do. Most complicated part is probably synthesizing user interaction, which I therefore echo here again:
sleep(3000);
click(600,600);
sleep(500);
click("Enter Comment");
sleep(500);
paste();
sleep(500);
click("SEND");
lenzrulz tends to lie about the time the autoresponder takes to respond. By now saving his spam as unlisted, for later publishing, he intends to make it appear as if the autoresponder takes much longer than it actually does. But that just confirms my warning that he'll try to fabricate false "evidence" in an attempt to support his lies.
In case you want to receive URLs of new lenzspam, and use it for an alternative implementation of response actions, you only need to know how to subscribe to the public MQTT broker. Using Linux, you want to install package mosquitto_clients, then execute:
mosquitto_sub -h "test.mosquitto.org" -t "renzlulz/spam/new"
I'm also publishing diagnostics under topic renzlulz/spam/debug - a new bit of information has recently been added: detection when my "--- end of thread ---" comments are not at the end of comments thread any longer.
First device now publishes response status on topic renzlulz/spam/response. MQTT topics can be wildcarded. To receive both, use as topic: renzlulz/spam/# or even renzlulz/#
For Android, the app
https://play.google.com/store/apps/details?id=in.dc297.mqttclpro can subscribe to server test.mosquitto.org, topic renzlulz/spam/new. This app is what I use to signal incoming new spam to Automagic, thereby triggering the autoresponse flow.
Automagic app for Android is here: https://play.google.com/store/apps/details?id=ch.gridvision.ppam.androidautomagic - That's sort of tasker automation app on steroids.
When intending to run your own lenzspam detector - that's the Linux SBC's job, an alternative to MQTT is possible, requiring no extra protocol handler: by doing a GET request to the Android device. Automagic can trigger on those too, and extract the lenzspam URL from the GET request address. This makes MQTT support unnecessary, but requires you to use your own lenzspam detector.
I've now set up a second device, triggered by such a GET request, passing lenzspam URL as part of the request. Automagic then extracts the spam URL, then continued autoinserting as described before. No MQTT involved with this setup.
I'm possibly going to eliminate the spam detecting SBC, and move it from SBC to Android device, resulting in a completely self-contained lenzspam autoresponder, needing only EveryCircuit and Automagic.
When I got around to try that, I'll describe that setup as Case 3 here.
|