| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | 
							- from datetime import datetime
 
- import os
 
- import sys
 
- from selenium import webdriver
 
- from selenium.webdriver.common.by import By
 
- from selenium.webdriver.support.ui import WebDriverWait, Select
 
- from selenium.webdriver.support import expected_conditions as EC
 
- from selenium.webdriver.common.keys import Keys
 
- from selenium.webdriver.remote.webdriver import WebDriver
 
- import time
 
- import rpyc
 
- from rpyc.utils.server import ThreadedServer # or ForkingServer
 
- from bs4 import BeautifulSoup
 
- import json
 
- def send(driver, cmd, params={}):
 
-     resource = "/session/%s/chromium/send_command_and_get_result" % driver.session_id
 
-     url = driver.command_executor._url + resource
 
-     body = json.dumps({'cmd': cmd, 'params': params})
 
-     response = driver.command_executor._request('POST', url, body)
 
- #    if response['status']:
 
- #        raise Exception(response.get('value'))
 
-     return response.get('value')
 
- def add_script(driver, script):
 
-     send(driver, "Page.addScriptToEvaluateOnNewDocument", {"source": script})
 
- def init_webdriver():
 
-     WebDriver.add_script = add_script
 
-     dir_path = os.path.dirname(os.path.realpath(__file__))
 
-     options = webdriver.ChromeOptions()
 
- #    options.add_argument("--user-data-dir=/home/jared/.config/google-chrome/")
 
- #    options.add_argument('--profile-directory="Profile 1"')
 
-     options.add_argument('--disable-web-security') 
 
-     options.add_argument('--allow-running-insecure-content')
 
-     options.add_argument('--disable-blink-features=AutomationControlled')
 
-     driver = webdriver.Chrome(  chrome_options=options)
 
-     return driver
 
- #global driver
 
- class MyService(rpyc.Service):
 
-     def process(self,url):
 
-         self.driver.add_script('const setProperty = () => {     Object.defineProperty(navigator, "webdriver", {       get: () => false,     }); }; setProperty();')
 
-         print('add url.............')
 
-         print(self.driver)
 
-     def __init__(self):
 
-         self.driver = None
 
-         try:
 
-             self.driver = init_webdriver()
 
-             print(self.driver )
 
-         except Exception as e:
 
-             raise e
 
-         finally:
 
-             True
 
-         pass
 
-     
 
-     def exposed_get_url(self,url):
 
-         self.driver.add_script('const setProperty = () => {     Object.defineProperty(navigator, "webdriver", {       get: () => false,     }); }; setProperty();')
 
-         print('add url.............')
 
-         print(self.driver)
 
-         self.driver.get(url)
 
-         
 
- #        txt=self.driver.find_element_by_xpath("//div[@id='json']").text
 
-         print(self.driver.page_source)
 
-         soup = BeautifulSoup(self.driver.page_source,features="lxml")
 
-         dict_from_json = json.loads(soup.find("body").text)
 
-         return dict_from_json
 
- #        return json.loads(self.driver.page_source)
 
- if __name__ == "__main__":
 
-     server = ThreadedServer(MyService(), port = 12345,protocol_config={
 
-     'allow_public_attrs': True,
 
- })
 
-     server.start()
 
 
  |