yawpp
stands for Yet Another WordPress Poster.
yawpp
includes two scripts, checker.js
and poster.js
.
checker.js
checks validity of Wordpress credentials using two methods: http wplogin and wordpress xmlrpc API. The script works fast with configurable number of simultaneous requests.
poster.js
creates posts using wordpress xml rpc api. So, it requires wp site to have enabled xml rpc api. The script posts sequentially.
You should have nodejs
and npm
to be installed on your system. The recommended way is to first install nvm and then use it for node installation:
nvm install --lts
Having nodejs
on your system, clone the repo and install dependencies:
git clone git@bitbucket.org:0xsky/yawpp.git
cd yawpp
npm install
Now you are ready to use yawpp
.
Getting help.
node src/checker.js --help
Checks with default 10 requests in parallel.
node src/checker.js -t targets.txt
Checks with 100 requests in parallel with non-default separator ":" (default is ";")
node src/checker.js -t targets.txt -n 100 -s :
Note: a separator can be only a single character. When specifying on command line, don't include into double quotes.
node src/checker.js -t /tmp/wp.txt
nBulks: 2, nReq: 10
bulk: 0, startIdx: 0 endIdx: 10
login|http://localhost;user1;pass1|false|false
login|http://localhost;user2;pass2|false|false
login|http://localhost;user3;pass3|false|false
login|http://localhost;user4;pass4|false|false
login|http://localhost;user5;pass5|false|false
login|http://localhost;user6;pass6|false|false
login|http://localhost;user7;pass7|false|false
login|http://localhost;user8;pass8|false|false
login|http://localhost;user9;pass9|false|false
login|http://localhost;user10;pass10|false|false
bulk: 1, startIdx: 10 endIdx: 20
login|http://localhost;user11;pass11|false|false
login|http://localhost;user12;pass12|false|false
login|http://localhost;user13;pass13|false|false
login|http://localhost;user14;pass14|false|false
login|http://localhost;user15;pass15|false|false
login|http://localhost;user16;pass16|false|false
login|http://localhost;user17;pass17|false|false
login|http://localhost;user18;pass18|false|false
login|http://localhost;user19;pass19|false|false
login|http://localhost;user20;pass20|false|false
The result lines are in the following format:
login|line|wpLoginOk|xmlLoginOk
- login: just a string login.
- line: domain, e.g. http://localhost.
- wpLoginOk: true if login was successful; note: username and password maybe ok but login may fail because of cloudflare check, for example.
- xmlLoginOk: true if login by xml rpc api was successful.
Getting help.
node src/poster.js --help
Target lines are in wp.txt
(option -t
) file, posts in html format are kept in posts
folder (option -p
), start from line 10
(option -f
), avoid duplicates true
(option -a
), maximum posts to do 100
(option -m
), update wordpress author biography from file bio.html
(option -b
), update wordpress author website to http://mysite.net
(option -w
):
node src/poster.js -t wp.txt -p posts/ -f 10 -a true -m 100 -b bio.html -w https://mysite.net
- Posts are in HTML format.
- Posts are randomly picked up from the post folder.
- Biography and website can be updated along with adding a post, too.
- Date of a post is taken randomly from the past year.
- With
-a
(--noduplicate
) option set to true, the script will search for a post in the wordpress site with the same title as a chosen post for publishing and will not publish the post again if already found on the site. Note, that this can be very slow and so by default this option is set to false. - The biography of the wordpress author is updated from a file specified by
-b
option. For example, the file can containTrusted by <a href="http://myfile.com">http://myfile.com</a>
- The website of the wordpress author is updated from an argument of
-w
option, for example-w https://myfile.net
.
2981|login|http://kolon.pl/;kowin_admin;1212KP!|true|true|true|true
2981|post|http://kolon.pl/;kowin_admin;1212KP!|8527|15|0
2981|bio|http://kolon.pl/;kowin_admin;1212KP!|true
lineNumber|line|wpLogin.usernameOk|wpLogin.passwordOk|wpLogin.loggedIn|xmlLoginOk
The same format as in checker.
lineNumber|post|line|postid|successfulPosts|duplicatedPosts
- lineNumber: line number processed.
- post: action name, post, for publishing a post.
- line: domain, e.g. http://localhost.
- postid: post id made for that line.
- successfulPosts: number of successful posts till now including the current post if successful
- duplacatedPosts: number of found duplicacted posts till now
lineNumber|bio|line|status
- lineNumber: line number processed.
- bio: action name, bio for updating biography.
- line: domain, e.g. http://localhost*
- status: true for success, false for failure
--END