input: from typing import List
  
  def crawl(url: str) -> List[str]:
      """Given a starting URL, this function crawls the webpage, collects all the links on the page,
      and then recursively crawls those links, collecting their page content. The function returns
      a list of URLs that were successfully crawled.
      >>> crawl('http://example.com')
      ['http://example.com/about', 'http://example.com/contact']
      """
output:     import requests
      from bs4 import BeautifulSoup
      from urllib.parse import urljoin
  
      def get_links(url):
          response = requests.get(url)
          soup = BeautifulSoup(response.text, 'html.parser')
          links = [urljoin(url, a['href']) for a in soup.find_all('a', href=True)]
          return links
  
      def crawl_recursive(url, visited):
          if url in visited:
              return []
          visited.add(url)
          links = get_links(url)
          result = [url]
          for link in links:
              result.extend(crawl_recursive(link, visited))
          return result
  
      visited = set()
      return crawl_recursive(url, visited)