Skip to main content

A langchain tool implementation of Undetected with Selenium and Chrome for page fetching, making it easier to bypass bot detectors

Project description

Undetected Browser Tool

The goal of this tool is to make accessing individual web pages behind bot detection like cloudflare a little easier. It is not a hacking tool, it's not 100% guaranteed, there are different settings in firewall services that could still block this. For example this is still detectable through CDP (chrome developer protocol) javascript. It's purpose is to be able to access publicly accessible data a single page at a time. It's slow, as it creates a browser instance, and navigates to a page, so it's not a viable web crawler. But it makes fetching a webpage that might not be available to an AI agent easier.

This is a langchain tool based on Selenium and the undetected-chromedriver project.

Installation

pip install -U undetected-browser-tool

Usage

We use this in langchain agents or in CrewAI Agents

from undetected_browser_tool import UndetectedBrowserTool

# for a headless browser
browser = UndetectedBrowserTool(headless=True) 

# or useful for debugging
browser = UndetectedBrowserTool(headless=False) 


# or using a proxy, change http to https or socks5 to suit your proxy settings
opts = {"proxy-server" : "http://xxx.xxx.xxx:port"}
browser = UndetectedBrowserTool(headless=False, additional_opts=opts) 

# fetch a page
page = browser.run("https://nowsecure.nl/")

Example with CrewAI

Untested code, written as an example for usage with CrewAI Be aware that langchain and Crew are in constant development, so these interfaces may change.

from crewai import Agent, Task, Crew
from undetected_browser_tool import UndetectedBrowserTool
from langchain_community.tools import DuckDuckGoSearchResults

browser = UndetectedBrowserTool(headless=True)
search_engine = DuckDuckGoSearchResults()

researcher = Agent(
            role="Researcher",
            goal="A document reviewing the top 5 solutions in {topic}",
            backstory="You are a research analyst tasked with reviewing software for an IT firm to help them make buying decisions",
            tools=[search_engine, browser],
)

report_writer = Agent(
            role="Report writer",
            goal="A executive review of the top 5 solutions in {topic}"
            backstory="You are a report writer for an IT firm, you excel at writing summaries and detailed reports for executives in an IT firm", 
            
)

research_task = Task(
            expected_output="A list of pros and cons, features, customer reviews and pricing of the top 5 solutions in {topic}",
            description="By using a search engine and Capterra, G2, Gartner write a review of the top 5 solutions in {topic}, include the source link for each item you find."
            tools=[search_engine, browser],
            agent=researcher,
)

report_task = Task(
            expected_output="An executive style report, with a summary, detailed information and a recommendation for selecting a solution in {topic}"
            description="Based upon the research provided, write an executive summary, detailed report, and a recommendation on the software selection. The report should have a table of features, pros / cons, and pricing options."
            output_file="report.md",
            context={research_task}
)

crew = Crew(agents=[researcher, report_writer], tasks=[research_task, report_task])

crew.kickoff(inputs={"topic" : "BI Reporting Platforms"})

Tips for being undetected

This is not a 100%, it's hard to be 100% but it's a good start.

  • Don't go through a data center, those IPs are easy to track and block.
  • Use proxies, and I recommend residential proxies. Tor networks are easily blocked.
  • Switch proxies frequently
  • Don't crawl the website, use a search service to try and pinpoint the page you need.

Every time a confirm you are a human page pops up, about 50% of the users just drop out, so companies who are dependent on traffic try to avoid that. Meaning as long as you're not doing something silly you're usually going to be ok.

Ethics

The use of automation tools to interact with websites is a nuanced topic that involves balancing access to information with respect for publishers' rights. Publishers have the right to protect their content and manage how it is accessed. They often allow search engines to index their data so it can be discovered by the general public, while also setting guidelines to regulate how their information is used.

If your intent is to occasionally access content to obtain information and properly reference the source, this tool can help streamline your workflow by automating repetitive tasks, thus saving time and effort.

However, if your goal is to scrape large amounts of data from a website, this project is not intended for that purpose. Engaging in large-scale scraping can violate the terms of service of many websites, infringe on intellectual property rights, and potentially cause harm to the website's infrastructure. For those needs, there are dedicated web scraping services and tools that are more appropriate and specifically designed to handle such activities.

Always ensure that your use of automation tools is ethical and complies with the website's terms of service. Respect the rights of content owners and use automation responsibly.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

undetected_browser_tool-1.0.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

undetected_browser_tool-1.0-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file undetected_browser_tool-1.0.tar.gz.

File metadata

  • Download URL: undetected_browser_tool-1.0.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for undetected_browser_tool-1.0.tar.gz
Algorithm Hash digest
SHA256 bb79fc9dc93487c405a7a25fab172b5c8be3f9232b277f8efeaa0c90be7fe930
MD5 6126f97f12997406a854e0bea22e5a49
BLAKE2b-256 e175759f39463086e7e7f087b3238b3921c57bbb47416460e1c50a0cc154cd91

See more details on using hashes here.

File details

Details for the file undetected_browser_tool-1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for undetected_browser_tool-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 52f93d0d6895fb7f5e369f354bd53705fbecccc4f343e1336a11837ec93b12f8
MD5 3ea5a44e5d4cb6ddbe0beb4420cc316b
BLAKE2b-256 b646ee2ed57861f26fc927454380d129b33d66a83386c02694640e4c10c4c6db

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page