序文
現在、一部の大会では、スポンサーや大会自体を宣伝するために、参加チームがオンラインで投票を行う必要があり、得票数でさえ結果の一定の割合を占めています。したがって、スワイプチケットが登場しました。今回は私たちのチームがコンペに参加し、上位数名を決めるためにオンライン投票を行う必要があります.技術者として、技術で解決できる問題を「解決」しなければならないのは当然です.投票。
原理
投票をスワイプする原理は非常に単純で、人がウェブサイトにログインして投票することをシミュレートするのと同じですが、プログラムがウェブサイトにアクセスして投票する人に取って代わるようにプロセスがプログラムされています。具体的には、まずクライアント(私たち)がサーバー(投票サイト)にリクエスト(Request)を送信し、彼らのウェブサイトの情報を読む必要があることを伝え、サーバーは私たちに返信(Respose)します。 、そして私たちは彼らに完成したフォームを送り(リクエスト)、彼らはそれを受け取ると私たちに返信します(応答)。
メインコンテンツ
- サイトの分析
- フォーム送信
- プロキシ IP プールの構築
1. ウェブサイトの分析
Web サイトごとに送信する必要がある情報は異なるため、最初にターゲット Web サイトを分析して、それに応じてフォーム インターフェイス (つまり、URL または URL) と送信する必要がある情報を見つける必要があります。
1.1 情報の収集
F12 を使用して監査要素を開き、[ネットワーク] をクリックして、実際にフォームを送信します。
2 つのフレーム内のコンテンツは、私たちが知る必要があるフォーム情報の一部です。
- リクエスト URL: リクエスト URL。送信した情報はこの URL に渡されます
- リクエスト方法: リクエスト方法、
上記で提出した方法は、取得する必要がある基本的な情報です. この情報に基づいて、チケットスワイププラグインを記述できますが、高い基準と厳しい要件を持つプログラマーとして彼自身、これで十分ですか?もちろん、そうではありません。この提出プロセスに抜け穴がないかどうかを確認する必要があります。
それを見つける方法は?ソースコードを解析して探したら見つかった!
ここには2つの致命的な抜け穴があります:
\1. 3 チーム以上の提出が可能で、最大数に制限はなく、最小数のみです。
\2. 同じデータをフィルタリングしません。
フォーム送信
フォーム情報を構築する
# 请求头信息
headers = {
'Accept': '*/*',
'Accept-Encoding': 'gzip',
'Accept-Language': 'zh-CN',
'Connection': 'keep-alive',
'Content-Length': '16',
'Content-Type': 'application/x-www-form-urlencoded',
'Host': 'www.dingnf.com',
'Origin': 'http://www.dingnf.com',
'Referer': 'http://www.dingnf.com/active/wxws_s',
'User-Agent': 'Mozilla/4.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.3029.110 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest'
}
# post表单网址
url = "http://www.dingnf.com/active/wxws_t"
params = {'ids': ['22', '22', '22']}
r = requests.post(url=url, data=params, headers=headers, proxies=proxies)
プロキシ IP プールの構築
IP プロキシ コンテナの構築
def WriteIPadress():
all_url = [] # 存储IP地址的容器
# 代理IP的网址
url = "http://api.xicidaili.com/free2016.txt"
r = requests.get(url=url)
all_url = re.findall("d+.d+.d+.d+:d+",r.text)
with open("D:\code\python\new\Brush ticket\IP.txt",'w') as f:
for i in all_url:
f.write(i)
f.write('
')
return all_url
メイン機能
一部の IP アドレスに問題があるため、プログラムが正常に実行されるように例外処理をセットアップする必要があり、API のデータは 15 分ごとに更新され、リストを実行する時間はほぼ同じであるため、他に対処することはありません。
実行ログ
コード
また、皆さんには使っていただけないのではないかと思いますので、書いたものを用意しましたので、そのままお使いいただけます!
ソースコードはBaiduクラウドディスクに配置されており、WeChatで以下のCSDN公式認証のQRコードをスキャンして無料で受け取る必要があります。
Python 学習教材について:
1. Python の全方位学習ルート
Pythonの全方位の技術ポイントを整理し、各分野の知識ポイントをまとめたもので、上記の知識ポイントに応じて対応する学習リソースを見つけることができ、より総合的に学習できるというメリットがあります。
2. Python の必須開発ツール
4. Python 動画集
ゼロベースの学習ビデオを見ることは、学習するための最も迅速かつ効果的な方法です.ビデオの教師のアイデアに従うことで、基本から詳細まで非常に簡単に始めることができます.
5. 実例
光学理論は役に立たないので、従うことを学ぶ必要があり、学んだことを実践に適用できるように、自分でそれを行う必要があります.この時点で、いくつかの実際の戦闘ケースから学ぶことができます.
6. パイソン演習
学習結果を確認します。
7.インタビュー情報
高給の仕事を見つけるには Python を学ばなければなりません. 以下のインタビューの質問は、Ali、Tencent、Byte などの第一線のインターネット企業からの最新のインタビュー資料であり、Ali の上司は信頼できる回答を提供しています. このセットを終えた後 インタビュー資料誰もが満足のいく仕事を見つけることができると信じています。
この完全版の Python 学習教材は CSDN にアップロードされています. 必要な場合は, 下の画像を携帯電話に保存し, WeChat で CSDN の公式認定の QR コードをスキャンして無料で入手できます [ 100 %無料保証】