Automatically fetch your grades, copy your data elsewhere to be used freely in other applications, since they don't have a REST API for Students.
⚠️ I take no responsibility if you get punished for using this. Also, I graduated so I am no longer testing this project. It should work as SIS' code hardly changes.
This tool no longer works on the new redesigned version of SIS due to change of selectors and various things. Update coming soon, but it's not exactly my highest priority. Godspeed.
Logins into SIS and scrapes grades and quarter for current classes, not to mention every class you've had in SIS, thanks to the "Grades" page.
Usually, it's VERY easy to scrape a website for data, especially one as simple as Focus SIS, which lacks any type of captchas and is VERY organized. However, they implemented an anti-inspect element script that prevents you from opening Inspect Element. Thanks to the fact that the script isn't inlined, it isn't always loaded first, so you can cancel loading Focus SIS when you have the dashboard loaded, but not other non-critical scripts.
This scrapper was designed around Palm Beach County's District portal. I am aware that the Focus SIS software can be utilized by other districts, however, their implementation may be older or newer than the one tested. Support is only provided for Palm Beach County's District Portal. If you'd like to test if it works on your district's version of Focus SIS, you can easily edit the SISFocusBaseURL
variable in index.js
.
- Quarter detection; outputted to console
- Can get ALL your classes from SIS.
- Session saved (we legit just save cookies, it's that easy)
- Saves your active classes grades to a JSON file.
- Evasion measures + tries to act like a human
- Assignment parsing
If you can, you should try to run this project LOCALLY. Not behind any VPN or anything like that, so the scrapper doesn't get flagged as a possible robot. This project SHOULD be able to be hosted on a Raspberry Pi.
- Webhook/POST to another service?
- Repeated scrapping
- SQLite integration?
- Types
- Not Graded assignment parsing 😭
- Install Node.js
- Run
npm install
- Rename
example.creds.json
tocreds.json
- Populate the JSON file with your credentials
- Profit
Do not share your username and password with others. If done, you could have A HUGE amount of your personal information leaked. That's something you don't want. I made this project just to simply check my grades. If you feel this code may be insecure or malicious, review it. It's very simple, to be honest.
Of course, contributions are welcome! I know right now the scrapper is limited in what it actually does with data, so I'd love to hear other people's ideas.
Found any bugs/ the project is broken? Leave an issue