For our internal Wiki (don't know which Mediawiki version, but oldish), I use MediaWiki::API, which can work from a username/password.
The relevant parts look like:
...
my ($url, $user, $passwd) = qw(http://wiki.serv.er/api.php rob.otter T
+0pSeCrEt);
...
use MediaWiki::API;
my $mw = MediaWiki::API->new();
$mw->{config}->{api_url} = $url;
# log in to the wiki
$mw->login( { lgname => $user, lgpassword => $passwd } )
|| die $mw->{error}->{code} . ': ' . $mw->{error}->{details};
...
my $pagename = ...;
my $ref = $mw->get_page( { title => $pagename } );
unless ( $ref->{missing} ) {
my $timestamp = $ref->{timestamp};
my %p = (
action => 'edit',
basetimestamp => $timestamp, # to avoid edit conflicts
title => $pagename,
bot => '1',
nocreate => '1',
text => '... this is the text ...',
);
$mw->edit(\%p)
|| die $mw->{error}->{code} . ': ' . $mw->{error}->{details}
+;
};
...
The content of the
%p hash are documented on the corresponding api.php page, e.g.
https://en.wikipedia.org/w/api.php?action=help&modules=edit.