Showing posts with label Kali Linux. Show all posts
Showing posts with label Kali Linux. Show all posts

Sunday, March 18, 2018

Selenium with Python using Geckodriver for Firefox in Kali Linux

Written by Pranshu Bajpai |  | LinkedIn

Selenium seems to be great for browser automation and has support for multiple programming languages, including my favorite -- Python. I decided to test it on Kali Linux and faced certain issues. So I resolved them one at a time and I am logging the procedure here.

Installing Selenium

 

First, we need to install the Selenium module in Python using 'pip install'. This is simply:
apt-get install python-pip  
pip install selenium
This should install the latest version of Selenium module. Test it by going to the Python command line and importing the module:
from selenium import webdriver
 This works. What does not work is following test code:
browser = webdriver.Firefox() 
browser.get('https://lifeofpentester.blogspot.com/')
It fails saying: webdriverexception: 'geckodriver' executable needs to be in path.

To resolve this, we need to install 'geckodriver'.

Installing Geckodriver

 

Grab 'geckodriver' from its Github here: https://github.com/mozilla/geckodriver/releases

I grabbed Linux64 bit version since I am running Kali Linux 64 bit. Unpack the archive and make the geckodriver executable and copy it so that Python can find it:

root@amirootyet:~# chmod +x Downloads/geckodriver
root@amirootyet:~# cp Downloads/geckodriver /usr/local/bin
 Now we are faced with a new error:

selenium.common.exceptions.WebDriverException: Message: connection refused

The problem here is that the latest version of Selenium that we installed cannot interface with the older version of Firefox that comes bundled with Kali Linux. I do have the latest version of Firefox downloaded and unzipped. 

Loading the correct Firefox version


So now we point Selenium to use this latest binary of Firefox instead:


from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('/root/Downloads/firefox/firefox')
driver = webdriver.Firefox(firefox_binary=binary)
Of course, you need to ensure that paths are correct pertaining to your system and where you downloaded and unzipped Firefox. At this point, we can get this Python script to open a webpage for us:
 
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('/root/Downloads/firefox/firefox')
driver = webdriver.Firefox(firefox_binary=binary)

driver.get('https://www.lifeofpentester.blogspot.com')
#insert time.sleep() here
driver.close()




So now that we have some browser automation going, I will post more results and scripts such as logging into web forms using automated Selenium scripts when I find time. Let me know in comments if this solution worked for you.