
LinkedInDumperは、LinkedInのソーシャルネットワーキングプラットフォームから従業員データをダンプするPython 3スクリプトです。
結果には、名、姓、役職(肩書き)、場所、およびユーザーのプロファイルリンクが含まれます。従業員が10人以下の会社の場合は、すべての従業員を取得するために2回のAPI呼び出しのみが必要です。それ以外の場合は、API結果をページネーションする必要があります。--email-format CLIフラグを使用すると、取得した名と姓に基づいてメールアドレスを自動生成するPython文字列フォーマットを定義できます。
LinkedInDumperは非公式のLinkedIn Voyager APIと通信するため、認証が必要です。そのため、有効なLinkedInユーザーアカウントが必要です。簡単にするために、LinkedInDumperはあなたが提供するクッキー値のみを期待します。この方法により、2FAで保護されたアカウントもサポートされます。さらに、従業員をダンプするためのLinkedIn会社URLを指定する必要があります。
li_at セッションクッキー値を取得します。li_at に永続的に指定するか、実行時に CLI フラグ --cookie を使用して一時的に指定します。usage: linkedindumper.py [-h] --url <linkedin-url> [--cookie <cookie>] [--quiet] [--include-private-profiles] [--include-contact-infos] [--jitter] [--email-format <mail-format>] [--output-json <json-file>] [--output-csv <csv-file>]
options:
-h, --help show this help message and exit
--url <linkedin-url> A LinkedIn company url - https://www.linkedin.com/company/<company>
--cookie <cookie> LinkedIn 'li_at' session cookie
--include-private-profiles
Show private accounts too
--include-contact-infos
Query each employee individually and retrieve contact infos
--jitter Add a random jitter to HTTP requests to bypass rate limiting
--email-format <mail-format>
Python string format for emails; for example:
--email-format '{0}.{1}@example.com' --> [email protected]
--email-format '{0[0]}.{1}@example.com' --> [email protected]
--email-format '{1}@example.com' --> [email protected]
--email-format '{0}@example.com' --> [email protected]
--email-format '{0[0]}{1[0]}@example.com' --> [email protected]
--output-json <json-file>
Store results in json output file
--output-csv <csv-file>
Store results in csv output file
docker run --rm l4rm4nd/linkedindumper:latest --url 'https://www.linkedin.com/company/apple' --cookie '<cookie>' --email-format '{0}.{1}@apple.de'
# install dependencies
pip install -r requirements.txt
python3 linkedindumper.py --url 'https://www.linkedin.com/company/apple' --cookie '<cookie>' --email-format '{0}.{1}@apple.de'
スクリプトは従業員データをセミコロン区切り値(CSV形式)で返します:
██▓ ██▓ ███▄ █ ██ ▄█▀▓█████ ▓█████▄ ██▓ ███▄ █ ▓█████▄ █ ██ ███▄ ▄███▓ ██▓███ ▓█████ ██▀███
▓██▒ ▓██▒ ██ ▀█ █ ██▄█▒ ▓█ ▀ ▒██▀ ██▌▓██▒ ██ ▀█ █ ▒██▀ ██▌ ██ ▓██▒▓██▒▀█▀ ██▒▓██░ ██▒▓█ ▀ ▓██ ▒ ██▒
▒██░ ▒██▒▓██ ▀█ ██▒▓███▄░ ▒███ ░██ █▌▒██▒▓██ ▀█ ██▒░██ █▌▓██ ▒██░▓██ ▓██░▓██░ ██▓▒▒███ ▓██ ░▄█ ▒
▒██░ ░██░▓██▒ ▐▌██▒▓██ █▄ ▒▓█ ▄ ░▓█▄ ▌░██░▓██▒ ▐▌██▒░▓█▄ ▌▓▓█ ░██░▒██ ▒██ ▒██▄█▓▒ ▒▒▓█ ▄ ▒██▀▀█▄
░██████▒░██░▒██░ ▓██░▒██▒ █▄░▒████▒░▒████▓ ░██░▒██░ ▓██░░▒████▓ ▒▒█████▓ ▒██▒ ░██▒▒██▒ ░ ░░▒████▒░██▓ ▒██▒
░ ▒░▓ ░░▓ ░ ▒░ ▒ ▒ ▒ ▒▒ ▓▒░░ ▒░ ░ ▒▒▓ ▒ ░▓ ░ ▒░ ▒ ▒ ▒▒▓ ▒ ░▒▓▒ ▒ ▒ ░ ▒░ ░ ░▒▓▒░ ░ ░░░ ▒░ ░░ ▒▓ ░▒▓░
░ ░ ▒ ░ ▒ ░░ ░░ ░ ▒░░ ░▒ ▒░ ░ ░ ░ ░ ▒ ▒ ▒ ░░ ░░ ░ ▒░ ░ ▒ ▒ ░░▒░ ░ ░ ░ ░ ░░▒ ░ ░ ░ ░ ░▒ ░ ▒░
░ ░ ▒ ░ ░ ░ ░ ░ ░░ ░ ░ ░ ░ ░ ▒ ░ ░ ░ ░ ░ ░ ░ ░░░ ░ ░ ░ ░ ░░ ░ ░░ ░
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
░ ░ ░ by LRVT
[i] Company Name: apple
[i] Company X-ID: 162479
[i] LN Employees: 1000 employees found
[i] Dumping Date: 17/10/2022 13:55:06
[i] Email Format: {0}.{1}@apple.de
Firstname;Lastname;Email;Position;Gender;Location;Profile
Katrin;Honauer;[email protected];Software Engineer at Apple;N/A;Heidelberg;https://www.linkedin.com/in/katrin-honauer
Raymond;Chen;[email protected];Recruiting at Apple;N/A;Austin, Texas Metropolitan Area;https://www.linkedin.com/in/raytherecruiter
[i] Successfully crawled 2 unique apple employee(s). Hurray ^_-
オプションで、--output-json および --output-csv CLIパラメータを使用して、結果をJSONまたはCSVとして保存することもできます。
LinkedInでは、連絡先情報を収集する際に最初の1,000件の検索結果のみが返されるようになっています。また、フリーミアムのLinkedInアカウントでプロフィールを閲覧するための最大クエリ数に達した場合、LinkedInプレミアムアカウントが必要になる場合があります。
さらに、すべての従業員プロフィールが公開されているわけではありません。結果は、使用するLinkedInアカウントや、クロール対象の会社の従業員と友人関係にあるかどうかによって異なります。そのため、一部の従業員アカウントの名、姓、プロフィールURLを取得できないことがあります。スクリプトは、名に「LinkedIn」、姓に「Member」などのデフォルト値が含まれるプロフィールは表示しません。そうしたプライベートプロフィールを含めたい場合は、CLI フラグ --include-private-profiles を使用してください。一部のアカウントが非公開であっても、そのようなアカウントの役職(肩書き)や場所を取得することは可能です。プライベートLinkedInアカウントでは、名、姓、プロフィールURLのみが非表示になります。
最後に、LinkedInユーザーは自由にプロフィールを命名できます。したがって、アカウント名には敬称、略語、絵文字、ミドルネームなど様々なものが含まれる可能性があります。私は不要なものを取り除くよう最善を尽くしましたが、これは一般的な問題に対する完全な解決策ではありません。なお、公式のLinkedIn APIは使用していないことに注意してください。このスクリプトは「非公式」のVoyager APIから情報を収集します。
実験的な --include-contact-infos CLI フラグを使用すると、ユーザーの連絡先情報(名、姓、住所、電話番号、メールアドレス、住所)の詳細を取得できます。これにより、列挙された各LinkedInユーザーアカウントを個別にクエリし、GraphQL APIを使用してデータを取得します。JSON出力のみを返し、リクエストが非常に多くなります。データが返されるかどうかは、ユーザーのプライバシー設定と、列挙に使用するLinkedInアカウントに依存します。
maximum request exceeded のようなエラーメッセージが表示される場合は、--jitter CLI パラメータを試して、自動APIリクエストに遅延を導入してください。これにより、LinkedInによる実装された検出またはレート制限を回避できる可能性があります。