Python シミュレートされたログインの複数の方法
この記事では主に Python の模擬ログインのさまざまな方法を紹介します。それぞれの方法について詳しく紹介しますので、興味のある方はぜひご覧ください
方法1: 既知の Cookie を直接使用して
にアクセスします 特徴: シンプルですが、最初にブラウザにログインする必要があります 原則:
簡単に言うと、Cookie はリクエストを開始したクライアントに保存されます。サーバーは Cookie を使用してさまざまなクライアントを区別します。 HTTP はステートレス接続であるため、サーバーが複数のリクエストを同時に受信すると、どのリクエストが同じクライアントによって開始されたかを判断できません。 「ログイン後にのみ表示されるページにアクセスする」という動作では、クライアントはサーバーに対して「私はログインしたばかりのクライアントです」ということを証明する必要があります。したがって、クライアントを識別し、その情報 (ログイン ステータスなど) を保存するには Cookie が必要です。
もちろん、これは、別のクライアントの Cookie を取得する限り、そのクライアントのふりをしてサーバーと通信できることも意味します。これは私たちのプログラムにチャンスを与えます。
最初にブラウザでログインし、開発者ツールを使用してCookieを表示します。次に、プログラムに Cookie を組み込んで Web サイトにリクエストを送信すると、プログラムはログインしたばかりのブラウザになりすまして、ログイン後にのみ表示されるページを取得できます。
具体的な手順:
1. ブラウザでログインし、ブラウザで Cookie 文字列を取得します まず、ブラウザを使用してログインします。開発者ツールを再度開き、[ネットワーク]タブに移動します。左側の [名前] 列で現在の URL を見つけ、右側の [ヘッダー] タブを選択して、Web サイトによってブラウザーに発行された Cookie を含むリクエスト ヘッダーを表示します。はい、後ろにある文字列です。これをコピーします。後でコード内で使用します。 プログラムを実行する前にログインすることが最善であることに注意してください。ログインするのが早すぎたり、ブラウザを閉じたりすると、コピーされた Cookie の有効期限が切れてしまう可能性があります。
2. コードを書く urllib ライブラリのバージョン:import sys import io from urllib import request sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码 #登录后才能访问的网站 url = 'http://ssfw.xmu.edu.cn/cmstar/index.portal' #浏览器登录后得到的cookie,也就是刚才复制的字符串 cookie_str = r'JSESSIONID=xxxxxxxxxxxxxxxxxxxxxx; iPlanetDirectoryPro=xxxxxxxxxxxxxxxxxx' #登录后才能访问的网页 url = 'http://ssfw.xmu.edu.cn/cmstar/index.portal' req = request.Request(url) #设置cookie req.add_header('cookie', raw_cookies) #设置请求头 req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36') resp = request.urlopen(req) print(resp.read().decode('utf-8'))
リクエスト ライブラリのバージョン:
import requests import sys import io sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码 #登录后才能访问的网页 url = 'http://ssfw.xmu.edu.cn/cmstar/index.portal' #浏览器登录后得到的cookie,也就是刚才复制的字符串 cookie_str = r'JSESSIONID=xxxxxxxxxxxxxxxxxxxxxx; iPlanetDirectoryPro=xxxxxxxxxxxxxxxxxx' #把cookie字符串处理成字典,以便接下来使用 cookies = {} for line in cookie_str.split(';'): key, value = line.split('=', 1) cookies[key] = value
方法 2: ログインをシミュレートして実行するクッキーアクセス
原則:
まず、プログラム内の Web サイトにログイン要求を送信します。つまり、ログイン情報 (ユーザー名、パスワードなど) を含むフォームを送信します。応答から Cookie を取得し、今後他のページにアクセスするときにこの Cookie を持参すると、ログイン後にのみ表示されるページを取得できます。 具体的な手順:
1. フォームが送信されるページを確認します 引き続きブラウザの開発者ツールを使用する必要があります。 [ネットワーク] タブに移動し、[ログの保存] をオンにします (重要!)。ブラウザで Web サイトにログインします。次に、左側の [名前] 列でフォームが送信されたページを見つけます。どうやって見つけますか?右側を見て、「ヘッダー」タブに移動します。まず、[全般] セクションで、リクエスト メソッドを POST にする必要があります。次に、下部に「フォーム データ」というセクションがあり、入力したばかりのユーザー名とパスワードが表示されます。左側の名前に「login」という単語が含まれている場合は、それがフォームが送信されたページである可能性があります (必ずしもそうであるとは限りません)。
ここで強調しておきたいのは、「フォームが送信されるページ」は通常、ユーザー名とパスワードを入力するページではないということです。したがって、ツールを使用してそれを見つけてください。 2. 送信するデータを確認しますブラウザにログインするときにユーザー名とパスワードを入力するだけですが、フォームにはそれ以上のデータが含まれています。フォームデータから送信する必要があるすべてのデータを確認できます。
import sys import io import urllib.request import http.cookiejar sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码 #登录时需要POST的数据 data = {'Login.Token1':'学号', 'Login.Token2':'密码', 'goto:http':'//ssfw.xmu.edu.cn/cmstar/loginSuccess.portal', 'gotoOnFail:http':'//ssfw.xmu.edu.cn/cmstar/loginFailure.portal'} post_data = urllib.parse.urlencode(data).encode('utf-8') #设置请求头 headers = {'User-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'} #登录时表单提交到的地址(用开发者工具可以看到) login_url = ' http://ssfw.xmu.edu.cn/cmstar/userPasswordValidate.portal #构造登录请求 req = urllib.request.Request(login_url, headers = headers, data = post_data) #构造cookie cookie = http.cookiejar.CookieJar() #由cookie构造opener opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie)) #发送登录请求,此后这个opener就携带了cookie,以证明自己登录过 resp = opener.open(req) #登录后才能访问的网页 url = 'http://ssfw.xmu.edu.cn/cmstar/index.portal' #构造访问请求 req = urllib.request.Request(url, headers = headers) resp = opener.open(req) print(resp.read().decode('utf-8'))
リクエスト ライブラリのバージョン:
import requests import sys import io sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码 #登录后才能访问的网页 url = 'http://ssfw.xmu.edu.cn/cmstar/index.portal' #浏览器登录后得到的cookie,也就是刚才复制的字符串 cookie_str = r'JSESSIONID=xxxxxxxxxxxxxxxxxxxxxx; iPlanetDirectoryPro=xxxxxxxxxxxxxxxxxx' #把cookie字符串处理成字典,以便接下来使用 cookies = {} for line in cookie_str.split(';'): key, value = line.split('=', 1) cookies[key] = value #设置请求头 headers = {'User-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'} #在发送get请求时带上请求头和cookies resp = requests.get(url, headers = headers, cookies = cookies) print(resp.content.decode('utf-8'))
リクエスト ライブラリの方が使いやすいことは明らかです~~ ~
方法 3: ログインをシミュレートした後、セッションを使用してログインを維持する
原則: セッションとはセッションを意味します。 Cookie と同様に、サーバーがクライアントを「認識」できるようになります。簡単に理解すると、クライアントとサーバー間のすべての対話を「セッション」として扱うことになります。それらは同じ「セッション」内にあるため、サーバーはクライアントがログインしたかどうかを自然に認識します。 具体的な手順:
1. フォームが送信されるページを見つけます
2. 送信されるデータを見つけます
这两步和方法二的前两步是一样的
3.写代码
requests库的版本
import requests import sys import io sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码 #登录时需要POST的数据 data = {'Login.Token1':'学号', 'Login.Token2':'密码', 'goto:http':'//ssfw.xmu.edu.cn/cmstar/loginSuccess.portal', 'gotoOnFail:http':'//ssfw.xmu.edu.cn/cmstar/loginFailure.portal'} #设置请求头 headers = {'User-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'} #登录时表单提交到的地址(用开发者工具可以看到) login_url = 'http://ssfw.xmu.edu.cn/cmstar/userPasswordValidate.portal' #构造Session session = requests.Session() #在session中发送登录请求,此后这个session里就存储了cookie #可以用print(session.cookies.get_dict())查看 resp = session.post(login_url, data) #登录后才能访问的网页 url = 'http://ssfw.xmu.edu.cn/cmstar/index.portal' #发送访问请求 resp = session.get(url) print(resp.content.decode('utf-8'))
方法四:使用无头浏览器访问
特点:
功能强大,几乎可以对付任何网页,但会导致代码效率低
原理:
如果能在程序里调用一个浏览器来访问网站,那么像登录这样的操作就轻而易举了。在Python中可以使用Selenium库来调用浏览器,写在代码里的操作(打开网页、点击……)会变成浏览器忠实地执行。这个被控制的浏览器可以是Firefox,Chrome等,但最常用的还是PhantomJS这个无头(没有界面)浏览器。也就是说,只要把填写用户名密码、点击“登录”按钮、打开另一个网页等操作写到程序中,PhamtomJS就能确确实实地让你登录上去,并把响应返回给你。
具体步骤:
1.安装selenium库、PhantomJS浏览器
2.在源代码中找到登录时的输入文本框、按钮这些元素
因为要在无头浏览器中进行操作,所以就要先找到输入框,才能输入信息。找到登录按钮,才能点击它。
在浏览器中打开填写用户名密码的页面,将光标移动到输入用户名的文本框,右键,选择“审查元素”,就可以在右边的网页源代码中看到文本框是哪个元素。同理,可以在源代码中找到输入密码的文本框、登录按钮。
3.考虑如何在程序中找到上述元素
Selenium库提供了find_element(s)_by_xxx的方法来找到网页中的输入框、按钮等元素。其中xxx可以是id、name、tag_name(标签名)、class_name(class),也可以是xpath(xpath表达式)等等。当然还是要具体分析网页源代码。
4.写代码
import requests import sys import io from selenium import webdriver sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf8') #改变标准输出的默认编码 #建立Phantomjs浏览器对象,括号里是phantomjs.exe在你的电脑上的路径 browser = webdriver.PhantomJS('d:/tool/07-net/phantomjs-windows/phantomjs-2.1.1-windows/bin/phantomjs.exe') #登录页面 url = r'http://ssfw.xmu.edu.cn/cmstar/index.portal' # 访问登录页面 browser.get(url) # 等待一定时间,让js脚本加载完毕 browser.implicitly_wait(3) #输入用户名 username = browser.find_element_by_name('user') username.send_keys('学号') #输入密码 password = browser.find_element_by_name('pwd') password.send_keys('密码') #选择“学生”单选按钮 student = browser.find_element_by_xpath('//input[@value="student"]') student.click() #点击“登录”按钮 login_button = browser.find_element_by_name('btn') login_button.submit() #网页截图 browser.save_screenshot('picture1.png') #打印网页源代码 print(browser.page_source.encode('utf-8').decode()) browser.quit()
相关推荐:
以上がPython シミュレートされたログインの複数の方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









MySQLには、無料のコミュニティバージョンと有料エンタープライズバージョンがあります。コミュニティバージョンは無料で使用および変更できますが、サポートは制限されており、安定性要件が低く、技術的な能力が強いアプリケーションに適しています。 Enterprise Editionは、安定した信頼性の高い高性能データベースを必要とするアプリケーションに対する包括的な商業サポートを提供し、サポートの支払いを喜んでいます。バージョンを選択する際に考慮される要因には、アプリケーションの重要性、予算編成、技術スキルが含まれます。完璧なオプションはなく、最も適切なオプションのみであり、特定の状況に応じて慎重に選択する必要があります。

この記事では、MySQLデータベースの操作を紹介します。まず、MySQLWorkBenchやコマンドラインクライアントなど、MySQLクライアントをインストールする必要があります。 1. mysql-uroot-pコマンドを使用してサーバーに接続し、ルートアカウントパスワードでログインします。 2。CreatedAtaBaseを使用してデータベースを作成し、データベースを選択します。 3. createTableを使用してテーブルを作成し、フィールドとデータ型を定義します。 4. INSERTINTOを使用してデータを挿入し、データをクエリし、更新することでデータを更新し、削除してデータを削除します。これらの手順を習得することによってのみ、一般的な問題に対処することを学び、データベースのパフォーマンスを最適化することでMySQLを効率的に使用できます。

MySQLのインストール障害の主な理由は次のとおりです。1。許可の問題、管理者として実行するか、SUDOコマンドを使用する必要があります。 2。依存関係が欠落しており、関連する開発パッケージをインストールする必要があります。 3.ポート競合では、ポート3306を占めるプログラムを閉じるか、構成ファイルを変更する必要があります。 4.インストールパッケージが破損しているため、整合性をダウンロードして検証する必要があります。 5.環境変数は誤って構成されており、環境変数はオペレーティングシステムに従って正しく構成する必要があります。これらの問題を解決し、各ステップを慎重に確認して、MySQLを正常にインストールします。

mysqlダウンロードファイルは破損していますが、どうすればよいですか?残念ながら、MySQLをダウンロードすると、ファイルの破損に遭遇できます。最近は本当に簡単ではありません!この記事では、誰もが迂回を避けることができるように、この問題を解決する方法について説明します。それを読んだ後、損傷したMySQLインストールパッケージを修復するだけでなく、将来の行き詰まりを避けるために、ダウンロードとインストールプロセスをより深く理解することもできます。最初に、ファイルのダウンロードが破損した理由について話しましょう。これには多くの理由があります。ネットワークの問題は犯人です。ダウンロードプロセスの中断とネットワーク内の不安定性は、ファイル腐敗につながる可能性があります。ダウンロードソース自体にも問題があります。サーバーファイル自体が壊れており、もちろんダウンロードすると壊れています。さらに、いくつかのウイルス対策ソフトウェアの過度の「情熱的な」スキャンもファイルの破損を引き起こす可能性があります。診断問題:ファイルが本当に破損しているかどうかを判断します

MySQLは、基本的なデータストレージと管理のためにネットワーク接続なしで実行できます。ただし、他のシステムとのやり取り、リモートアクセス、または複製やクラスタリングなどの高度な機能を使用するには、ネットワーク接続が必要です。さらに、セキュリティ対策(ファイアウォールなど)、パフォーマンスの最適化(適切なネットワーク接続を選択)、およびデータバックアップは、インターネットに接続するために重要です。

MySQLデータベースパフォーマンス最適化ガイドリソース集約型アプリケーションでは、MySQLデータベースが重要な役割を果たし、大規模なトランザクションの管理を担当しています。ただし、アプリケーションのスケールが拡大すると、データベースパフォーマンスのボトルネックが制約になることがよくあります。この記事では、一連の効果的なMySQLパフォーマンス最適化戦略を検討して、アプリケーションが高負荷の下で効率的で応答性の高いままであることを保証します。実際のケースを組み合わせて、インデックス作成、クエリ最適化、データベース設計、キャッシュなどの詳細な主要なテクノロジーを説明します。 1.データベースアーキテクチャの設計と最適化されたデータベースアーキテクチャは、MySQLパフォーマンスの最適化の基礎です。いくつかのコア原則は次のとおりです。適切なデータ型を選択し、ニーズを満たす最小のデータ型を選択すると、ストレージスペースを節約するだけでなく、データ処理速度を向上させることもできます。

MySQLは開始を拒否しましたか?パニックにならないでください、チェックしてみましょう!多くの友人は、MySQLのインストール後にサービスを開始できないことを発見し、彼らはとても不安でした!心配しないでください、この記事はあなたがそれを落ち着いて対処し、その背後にある首謀者を見つけるためにあなたを連れて行きます!それを読んだ後、あなたはこの問題を解決するだけでなく、MySQLサービスの理解と問題のトラブルシューティングのためのあなたのアイデアを改善し、より強力なデータベース管理者になることができます! MySQLサービスは開始に失敗し、単純な構成エラーから複雑なシステムの問題に至るまで、多くの理由があります。最も一般的な側面から始めましょう。基本知識:サービススタートアッププロセスMYSQLサービススタートアップの簡単な説明。簡単に言えば、オペレーティングシステムはMySQL関連のファイルをロードし、MySQLデーモンを起動します。これには構成が含まれます

MySQLパフォーマンスの最適化は、インストール構成、インデックス作成、クエリの最適化、監視、チューニングの3つの側面から開始する必要があります。 1。インストール後、INNODB_BUFFER_POOL_SIZEパラメーターやclose query_cache_sizeなど、サーバーの構成に従ってmy.cnfファイルを調整する必要があります。 2。過度のインデックスを回避するための適切なインデックスを作成し、説明コマンドを使用して実行計画を分析するなど、クエリステートメントを最適化します。 3. MySQL独自の監視ツール(ShowProcessList、ShowStatus)を使用して、データベースの健康を監視し、定期的にデータベースをバックアップして整理します。これらの手順を継続的に最適化することによってのみ、MySQLデータベースのパフォーマンスを改善できます。
