
Security News
MCP Community Begins Work on Official MCP Metaregistry
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.
Unofficial Python API for Clipper Card (transportation pass used in the SF Bay Area)
clippercard
is an unofficial python client for clippercard.com, written in Python.
Not only is the clippercard web site a inaccessible by API, its behind-the-scene's HTML structure and HTTP protocol is not semantically structured. This library aims to provide an unofficial but sensible interface to the official web service.
I enjoy the actual user experience of ClipperCard on buses and trains. My complaints about the service are purely isolated to its web interface. I saw a problem, and I solved it for myself, that's all.
As an advocate for data accessibility, I believe our dollars, our votes, our voices and our actions can nudge institutions in the direction we'd like them to go. At Bay Area's Metropolitan Transportation Commission, I am sure there are a lot of great people doing good work to the best of their ability, and within the context of prioritization, organizational structure and resources available to them.
I encourage the staff of MTA reading this project to see this effort as a nudge for a public and official API. The moment they put up an API that obsoletes this project, I will happily direct followers to the official solution. If you'd like them to increase attention to data accessibility, you can send them an email at info@mtc.ca.gov and tell them I sent you.
I don't have access to all products loadable on the ClipperCard, so transit product variant support is limited to what I personally use for now. If you'd like me to add support for your product, send me the page source from your account home page: https://www.clippercard.com/ClipperWeb/account.html
It's important to point out that:
For now, this project is targeted at other software developers, who are capable of assessing my source code for security implications.
To install clippercard, simply:
$ pip install clippercard
import clippercard
session = clippercard.Session('username', 'password')
print(session.profile_info)
for c in session.cards:
print(c)
You also get a super convenient command line binary clippercard
::
$ clippercard -h # see usage information
$ clippercard summary
+-----------------+------------------------------------------------+
| name | Golden Gate Hacker |
| email | goldengate88@systemfu.com |
| mailing_address | 1 Main St, San Francisco, CA 94105 |
| phone | 415-555-5555 |
| alt_phone | 650-555-5555 |
| primary_payment | Mastercard ending in 1234 |
| backup_payment | Amex ending in 9876 |
+-----------------+------------------------------------------------+
+---+---------------------------+------------+-------+--------+-------------------------+
| # | Name | Serial | Type | Status | Products |
+---+---------------------------+------------+-------+--------+-------------------------+
| 1 | Primary, card #2021234134 | 2021234134 | ADULT | Active | Cash Value: $195.00 |
| | | | | | Current Passes: None |
| | | | | | Pending Passes: None |
| | | | | | Reload: $255 - Autoload |
| 2 | Backup, card #2021234156 | 2021234156 | ADULT | Active | Cash Value: $200.00 |
| | | | | | Current Passes: None |
| | | | | | Pending Passes: None |
| | | | | | Reload: $200 - Autoload |
+---+---------------------------+------------+-------+--------+-------------------------+
If you wish to use clippercard without specifying username/password on the CLI, create a file ~/.clippercardrc
with this format::
[default]
username = goldengate88@example.com
password = superseekrit
You may toggle accounts via the --account
flag on the command line to access one of several configs in the file::
[default]
username = <replace_with_your_email>
password = <replace_with_your_password>
[other]
username = <replace_with_login_email>
password = <replace_with_login_password>
The other
credentials can then be accessed via::
$ clippercard summary --account=other
If you have a transit pass that isn't recognized by this tool, you can privately share a copy of your account page view-source:
with the maintainer.
pylint
on your diffspytest
😎)CHANGES.txt
describing your changeFAQs
Unofficial Python API for Clipper Card (transportation pass used in the SF Bay Area)
We found that clippercard demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.
Research
Security News
Socket uncovers an npm Trojan stealing crypto wallets and BullX credentials via obfuscated code and Telegram exfiltration.
Research
Security News
Malicious npm packages posing as developer tools target macOS Cursor IDE users, stealing credentials and modifying files to gain persistent backdoor access.