Jump to content
View in the app

A better way to browse. Learn more.

OSBot :: 2007 OSRS Botting

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Checking if an account is banned

Featured Replies

Java:

 

Depends on Apache's HTTPClient

 

Would be interested to know if someone has a better way of doing this

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class BanChecker {

    public final boolean isBanned(final String username, final String password) throws IOException {
        HttpClient httpClient = HttpClientBuilder.create().build();

        // Login to the account
        HttpResponse loginResponse = login(httpClient, username, password);

        // Go to the account settings page
        HttpResponse accountSettingsResponse = getAccountSettings(httpClient, loginResponse);

        // Get the account history link from the account settings page
        Optional<String> accountHistoryLink = getAccountHistoryLink(accountSettingsResponse.getEntity().getContent());

        if (!accountHistoryLink.isPresent()) {
            System.out.println("Could not find account history link on settings page");
            return false;
        }

        // Go to the account history page
        HttpGet accountHistoryRequest = new HttpGet(accountHistoryLink.get());
        HttpResponse accountHistoryResponse = httpClient.execute(accountHistoryRequest);

        // Search the account history page to check if account is banned
        return isAccountStatusBanned(accountHistoryResponse.getEntity().getContent());
    }

    private HttpResponse login(final HttpClient httpClient, final String username, final String password) throws IOException {
        HttpPost loginRequest = new HttpPost("https://secure.runescape.com/m=weblogin/login.ws");

        loginRequest.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
        loginRequest.addHeader("Accept-Encoding", "gzip, deflate, br");
        loginRequest.addHeader("Accept-Language", "en-GB,en-US;q=0.8,en;q=0.6");
        loginRequest.addHeader("Cache-Control", "max-age=0");
        loginRequest.addHeader("Connection", "keep-alive");
        loginRequest.addHeader("Content-Type", "application/x-www-form-urlencoded");
        loginRequest.addHeader("Host", "secure.runescape.com");
        loginRequest.addHeader("Origin", "https://secure.runescape.com");
        loginRequest.addHeader("Referer", "https://secure.runescape.com/m=weblogin/loginform.ws?mod=www&ssl=1&expired=0&dest=account_settings.ws");
        loginRequest.addHeader("Upgrade-Insecure-Requests", "1");
        loginRequest.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36");

        List<NameValuePair> loginParameters = new ArrayList<>();
        loginParameters.add(new BasicNameValuePair("username", username));
        loginParameters.add(new BasicNameValuePair("password", password));
        loginParameters.add(new BasicNameValuePair("mod", "www"));
        loginParameters.add(new BasicNameValuePair("ssl", "1"));
        loginParameters.add(new BasicNameValuePair("dest", "account_settings.ws"));

        loginRequest.setEntity(new UrlEncodedFormEntity(loginParameters));

        return httpClient.execute(loginRequest);
    }

    private HttpResponse getAccountSettings(final HttpClient httpClient, final HttpResponse loginResponse) throws IOException {
        HttpGet accountSettingsGetRequest = new HttpGet(loginResponse.getFirstHeader("Location").getValue());
        return httpClient.execute(accountSettingsGetRequest);
    }

    private Optional<String> getAccountHistoryLink(final InputStream accountSettings) throws IOException {
        Pattern accountHistoryLinkPattern = Pattern.compile("src=\"([^\"]+account_history.ws)\"");

        try (BufferedReader settingsReader = new BufferedReader(new InputStreamReader(accountSettings))) {
            String settingsLine;
            while ((settingsLine = settingsReader.readLine()) != null) {
                Matcher accountHistoryLinkMatcher = accountHistoryLinkPattern.matcher(settingsLine);
                if (accountHistoryLinkMatcher.find()) {
                    return Optional.of(accountHistoryLinkMatcher.group(1));
                }
            }
        }
        return Optional.empty();
    }

    private boolean isAccountStatusBanned(final InputStream accountHistoryPage) throws IOException {
        try (BufferedReader accountStatusReader = new BufferedReader(new InputStreamReader(accountHistoryPage))) {
            String accountStatusLine;
            while ((accountStatusLine = accountStatusReader.readLine()) != null) {
                if (accountStatusLine.contains("<b>Banned:</b>")) {
                    return true;
                }
            }
        }
        return false;
    }
}

 

Python 3:

 

import re
import requests

def is_banned(username, password):
    session = requests.Session()
    login_response = login(session, username, password)
    url_account_id = get_url_account_id(session, login_response)
    account_history = get_account_history(session, url_account_id)
    return'<b>Banned:</b>' in account_history.text

def login(session, username, password):
    login_url = 'https://secure.runescape.com/m=weblogin/login.ws'

    data = {
        'username': username,
        'password': password,
        'mod' : 'www',
        'ssl' : '1',
        'dest' : 'account_settings.ws'
    }

    headers = {
        "Accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
        "Accept-Encoding" : "gzip, deflate, br",
        "Accept-Language" : "en-GB,en-US;q=0.8,en;q=0.6",
        "Cache-Control" : "max-age=0",
        "Connection" : "keep-alive",
        "Content-Type" : "application/x-www-form-urlencoded",
        "Host" : "secure.runescape.com",
        "Origin" : "https://secure.runescape.com",
        "Referer" : "https://secure.runescape.com/m=weblogin/loginform.ws?mod=www&ssl=1&expired=0&dest=account_settings.ws",
        "Upgrade-Insecure-Requests" : "1",
        "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"
    }

    return session.post(login_url, data=data, headers=headers, allow_redirects=False)

def get_url_account_id(session, login_response):
    login_redirects = session.resolve_redirects(login_response, login_response.request)

    # We are interested in the second redirect, so skip the first
    next(login_redirects)

    login_redirect = next(login_redirects)

    return re.search('c=[^/]+', login_redirect.url).group(0)
    
def get_account_history(session, url_account_id):
    return session.get('https://secure.runescape.com/m=offence-appeal/' + url_account_id + '/account_history.ws')
 

Edited by Explv

Dank will help a lot of people who make automated bot scripts for their farms :)

 

I have no fucking idea, what i just read, but looks good and by what Saiyan said! its helpful great job! 

seems like you really took work of what i said you yesterday

i appriciate that :D

  • 3 months later...
  • 1 year later...

Is this method of ban checking still effective considering captcha's and requiring you to have a registered email?

Edited by Zummy

  • 1 year later...

working?

I'm getting a null pointer exception at line 75 (below)

HttpGet accountSettingsGetRequest = new HttpGet(loginResponse.getFirstHeader("Location").getValue());

Create an account or sign in to comment

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.