ローカル REST API 自動化インターフェース
パート 1 はじめに
ブラウザの自動化により、Lalicat ブラウザ プロファイルで自動的にタスクを実行でき、ローカル API インターフェース機能をサポートし、アカウント構成情報の読み取りと書き込み、ブラウザの起動と終了、アカウント リストのクエリ、プロキシ IP の構成などを、プログラム的な方法。
Lalicat API 命令: Lalicat API ファイル
パート 2 Selenium WebDriver をベースに、Lalicat は Puppeteer をサポートできます
通常、selenium コードを実行する場合は、最初に chrome ドライバーに接続してから、必要な機能を設定します。 Selenium コードで Lalicat を使用する場合、これを行う必要はありません。 Web ドライバー プログラムを使用して、ローカル ポート経由で Lalicat アプリケーションまたはブラウザー プロファイルに接続し、必要な機能を設定し、定義済みのブラウザー構成ファイルで selenium コマンドを実行します。
もちろん、Selenium と Puppeteer 自動化フレームワークを離れて、API を直接呼び出して自動化操作を実行することもできます。
パート 3 対応言語
複数のコーディング言語で実行できます。
第4部 ラリキャットでの利用
1.Lalicat ポートの定義
自動化を使用するには、事前にソフトウェア ポートを定義する必要があります。ポートを定義する方法は次のとおりです。
設定 -> ブラウザ -> 監視とポート
2. API トークンを確認します。
3. Lalicat ブラウザ カーネル バージョン:
96 の場合は、次をダウンロードしてください。
http://chromedriver.storage.googleapis.com/96.0.4664.45/chromedriver_win32.zip
98 の場合は、次をダウンロードしてください。
http://chromedriver.storage.googleapis.com/98.0.4758.80/chromedriver_win32.zip
chromedriver のバージョンが正しくキャッチされていない場合、自動化に失敗します。
ブラウザを閉じることができない場合は、http://127.0.0.1:30725/api/v1/profile/stop?profileId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx のインターフェイスを使用して、指定したブラウザ プロセスを閉じることができます。構成。
コードを実行するときにブラウザーしか開けない (ただし Web サイトは開けない) 場合は、[chromedriver.exe] を Python インストール ディレクトリにコピーする必要があります。または、モバイル エミュレーション モードを選択している場合は、変更してください。
4. インターフェイスは、プロキシ サーバー情報を渡すこともできます。プロキシ情報が渡されると、構成ファイル内のプロキシ情報が上書きされます。このカバレッジは一時的なものであり、構成ファイルを実際に変更することはありません。自動化されたインターフェースに対してのみ有効です。
マークアップ
http://127.0.0.1:30725/api/v1/profile/start?automation=true&profileId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&proxytype=socks5&proxyserver=ip&proxyport=1080&proxyusername=&proxypassword=
C++
プロキシには 4 つのタイプがあります。
プロキシタイプ=靴下5
プロキシタイプ = 靴下 4
プロキシタイプ=http
プロキシタイプ=https
プロキシのユーザー名とパスワードを空白にすることはできません。
パート 5. Python の使用例:
セレンインポートウェブドライバーから
from selenium.webdriver.chrome.options import オプション
インポートリクエスト
mla_profile_id = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
mla_url = 'http://127.0.0.1:30725/api/v1/profile/start?automation=true&profileId='+mla_profile_id
resp = requests.get(mla_url)
json = resp.json()
print(json['値'])
chrome_options = オプション()
chrome_options.add_experimental_option("debuggerAddress", json['値'][7:])
chrome_driver = r"chromedriver.exe"
#http://chromedriver.storage.googleapis.com/79.0.3945.36/chromedriver_win32.zip
#chromedriver ファイルをダウンロードし、Python のカテゴリに入れます
ドライバー = webdriver.Chrome(chrome_driver, chrome_options=chrome_options)
driver.get('https://www.lalimao.com/')
executor_url = driver.command_executor._url
session_id = driver.session_id
印刷 (executor_url)
印刷 (session_id)
print('完了しました')
driver.quit()
パート 6. Java ユースケース
パッケージ com.ruoyi.common.spider.reptile;
cn.hutool.json.JSONObject をインポートします。
org.openqa.selenium.WebDriver をインポートします。
org.openqa.selenium.chrome.ChromeDriver をインポートします。
org.openqa.selenium.chrome.ChromeOptions をインポートします。
java.io.BufferedReader をインポートします。
java.io.InputStreamReader をインポートします。
java.net.HttpURLConnection をインポートします。
java.net.URL をインポートします。
/**
* @author lalicat
* <依存関係>
*
org.seleniumhq.selenium
*
selenium-java
* <バージョン>3.141.59
*
*/
パブリック クラス ProductChrome {
public static void main(String[] args) throws Exception {
ProductChrome pc = 新しい ProductChrome();
文字列 profileId = UUID.randomUUID().toString();
// profileId に基づいて、リモート アドレスを開いて取得します
URL url = 新しい URL(pc.startProfile("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"));
//リモート アドレスを使用して、開いている Chrome ブラウザにリンクします
System.setProperty("webdriver.chrome.driver", "D:\\lalimao\\chrome\\90.0.4430.85\\chromedriver.exe");//ドライバーの位置を指す
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("debuggerAddress", url.getAuthority());
WebDriver ドライバー = 新しい ChromeDriver(chromeOptions);
//ラリキャットにアクセス
driver.get("https://www.lalicat.com/");
System.out.println(driver.getTitle());
driver.quit();
}
プライベート String startProfile(String profileId) は例外をスローします {
文字列 url = "http://127.0.0.1:30725/api/v1/profile/start?automation=true&profileId=" + profileId;
URL obj = 新しい URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
BufferedReader in = new BufferedReader(
新しい InputStreamReader(con.getInputStream()));
文字列inputLine;
StringBuffer 応答 = 新しい StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
JSONObject jsonResponse = new JSONObject(response.toString());
return jsonResponse.getStr("値");
}
}