Tor Project: Cloudflare CAPTCHA Monitoring

Hi all,
I’m Barkin and I will be working on the “Cloudflare CAPTCHA Monitoring” project as a part of the Tor Project with my mentors @Georg and @arma. I’m going to post updates about my progress under this topic. You can find more detailed information about my project here.

I’m super excited about participating in GSoC 2020!



Welcome aboard. We are excited as well to see this issue tackled. If there are questions let us know.


Community Bonding Period - Week 1

This week (or in the last 3 days), I spent my time updating the GSoC page on the Tor Project’s trac and talking to my mentors for future planning for my project. They told me to create a “core page” on Tor Project’s trac for explaining my project. So, we can direct people to that page if they want to learn more about the project or check the code. I started working on that page, as well.

IRC is not something new to me, but I have never used IRC actively. Once I read an article that resembled IRC to a crowded bar, where everyone talks to everyone loudly. This week, I realized how true that is. I also observed that people tag their messages in different ways (like using numbers or letters) to make it easier for other people to reply using these tags. It is a different type of communication method than I used to, but I am getting used to using it.

I am looking forward to finishing the finals for my university classes and start working on the code!

1 Like

Community Bonding Period - Week 2

This week I expanded my knowledge about “receiving IRC messages 24/7”, even while my computer is turned off. This was an important issue for me to solve since IRC doesn’t buffer the incoming messages. Instead, users need to have special systems to buffer these messages, so that the users can view buffered messages once they are available.

Meanwhile, I started talking to the OONI people about improving my project and benefitting from their past experience in this field.

Finally, I sent a semi-formal introduction about my project to the tor-dev mailing list and asked to get some feedback from the community. I waited to finalize the wiki article to send this email because I thought it would be more meaningful to have documentation of the project attached to the email. I also brainstormed about various approaches for getting feedback and having the community involved in the idea development process.

Once again, I am looking forward to finishing the finals for my university classes and start working on the code!


A post was split to a new topic: Tips to avoid missing messages on IRC while away

Community Bonding Period - Week 3

This week I created the parent and children trac tickets for the milestones for my project. These trac tickets will help me to let the community know about my progress and get feedback from them while I keep track of what I do each week.

I already received a few feedback about what I did so far on ticket #33010. This week, I also spent my time incorporating this feedback into my project and the milestones.

I additionally worked on getting an SSL certificate for my IRC bouncer setup because it is 2020 and encryption is a must. I discovered that Let’s Encrypt issues SSL certificates at no cost and I got one for my IRC bouncer server.

1 Like

Community Bonding Period - Week 4
This week I restructured the preliminary code I had previously. I did this to make it work as I explained in my project diagram below. The changes I implemented made it possible to easily download the database.

Later, I worked on making the code reliable because it wasn’t always working in the “headless” mode. There was an undocumented dependency problem in the tor-browser-selenium library that I was using. I needed to install the Firefox browser to reliably use the library. I don’t think it is related to having “Firefox” installed on the system but I think it is related to having a piece of code Firefox installs. It took a long time to figure this out and I will raise this issue in the library’s GitHub repository to further investigate with the maintainers.

I also added the functionality to add new headers to the requests and save response HTTP headers. The original selenium library doesn’t have this functionality, and I needed to find another way to interact with the headers. I ended up using the selenium-wire, which is an extension of the original selenium library and it allowed me to interact with the HTTP headers.

So, I spent this week trying to get a very basic working version of the project, and I did it! Now, I will extend it and make it complete during the coding phase. I think it has been a great community bonding period, which helped me to get feedback from the community and get prepared for the coding phase.