How to break "select different image" CAPTCHA with Python - python

So I have this code in Python3 that scraps data from websites through object recongnition (I used this to automate the download process inside a flash player based website) and Selenium. The problem is that I'm stuck with this website that have a custom made Captcha where the user have to select the different image from the group and I donĀ“t know how to download or get these images from the site in order to identify the different one, has anyone solved a problem like this? or have an idea on how to solve this captcha with any other technique or method?
This is the login that has the CAPTCHA
And here's the link to the site which is in spanish. The captcha basically says "Select the different image"
https://portalempresas.sb.cl/login.php
Thanks!

To download those images as png files you could do:
from io import BytesIO
from PIL import Image
# Download image function
def downloadImage(element,imgName):
img = element.screenshot_as_png
stream = BytesIO(img)
image = Image.open(stream).convert("RGB")
image.save(imgName)
# Find all the web elements of the captcha images
image_elements = driver.find_elements_by_xpath("*//div[contains(#class,'captcha-image')]")
# Output name for the images
image_base_name = "Imagen_[idx].png"
# Download each image
for i in range(len(image_elements)):
downloadImage(image_elements[i],image_base_name.replace("[idx]","%s"%i))
Edit 1:
If you want to compare 2 images to see if they are equal you could try with this post
Edit 2:
Using the solution edited above, these are the results:

Related

The extension in image url is different from actual format

I downloaded an image from a url such as "https://www.xxxx.com/filename.jpeg. I expected that that image is a jpeg image whose format is acceptable for Computer Vision Annotation Tool (CVAT). However, it was saved as filename.heif or filename.jpeg.heif, so it causes an error when I tried to create a task with that image because heif format is not acceptable in CVAT. (CVAT automatically downloads images and create a task once I put image urls and submit them.)
I usually put more than 1000 image urls to create a task, and it is really hard to find invalid url or image among them.
Is there any way to find the "actual format" only by looking at the image url? Or can I just skip invalid urls in CVAT?
Thank you.

Python - read array and download each image locally

my favourite helpful people.
Im trying to download openweathermap weather icons locally, and trying to find a way of recursively saving them.
I have this code to save individual ones, but would like to be able to try a for each loop to run through a list/array to get all the others. Basic stuff I know, just having a brain freeze right now.
This is the single download code:
import urllib.request
imgURL = "http://openweathermap.org/img/w/03d.png"
urllib.request.urlretrieve(imgURL, "weathericons/03d.png")
03d.png is one of the files I would like to iterate through an array or list to get the other images, so would like to download based on changing the last part of the URL with each of the image names.
Hope someone can help, many thanks
You can use a for loop with some format strings to generate the desired URLs:
import urllib.request
for i in range(1, 5):
imgURL = f"http://openweathermap.org/img/w/0{i}d.png"
urllib.request.urlretrieve(imgURL, f"weathericons/0{i}d.png")

How can i get someone's profile pic on Discord to edit it using PIL?

I'm trying to make some code on python to edit someone's profile pic, but all I've got so far is this:
image = ctx.message.author.avatar_url
background = Image.open(image)
Apparently that just gets the URL itself, but i need the image itself to edit a picture with PIL. Any insight on how to get it?
with requests.get(ctx.message.author.avatar_url) as r:
img_data = r.content
with open('image_name.jpg', 'wb') as handler:
handler.write(img_data)
So I played about with this link a bit:
https://cdn.discordapp.com/avatars/190434822328418305/6a56d4edf2a82409ffc8253f3afda455.png
And I was able to save my own avatar image (the one I use for my accounts everywhere). I was then able to open the file regularly with the photo viewer app within Pycharm.
After, it would simply become a case of opening the new jpeg file with PIL or pillow instead of trying to open anything from a website, if that makes sense.
You should consider that this will save a file onto your Discord bot server, so this is extremely crude, a malformed or maliciously formed jpeg file could lead to some sort of remote vulnerability.
Furthermore to your comment, if you want the size of the image you download to be bigger, for example, please see the amended link below to solve your problem there:
https://cdn.discordapp.com/avatars/190434822328418305/6a56d4edf2a82409ffc8253f3afda455.png?size=<Number from list [16,32,64,128,256,512,1024,2048]>
Hope this helps :)

Python, How to download images from yandex and google

I found this "https://github.com/hardikvasa/google-images-download" and i'm usually using it with -u url link, but how i can make it download related images in each images result ? Each images in result have 7 related images when you clicked on it and 6 related images on yandex.
i'm looking for a solution to download(or get direct link) all images + related images with provided image search link (google/yandex)
Thank

How to add caption to image in Facebook using Selenium?

I have been trying to get my head around selenium to upload image in Facebook. As per this answer, I am able to do so using the following code:
driver.find_element_by_id("IdOfInputTypeFile").send_keys(os.getcwd()+"/image.png")
But, how can I add the caption to the very image on facebook?

Categories