日々・開発日誌

BLOG

Web制作の記事一覧


PHPのPostの上限数

2018-11-20
PHPでPostできるデータの上限数を変更したい場合

php.iniで設定する場合は

php_value max_input_vars 20000


.htaccessで設定する場合は

max_input_vars = 20000

※ ただし、.htaccessは設置したディレクトリの階層以下のみ反映

メルカリはどうやって複数アカウント利用を検知するのか

2018-11-04

突然のメルカリからの利用停止通知

メルカリ利用者の人で、ある日突然複数アカウント利用による規約違反で利用停止の通知が来て途方に暮れている人が結構いるようです。
複数アカウントで検索した結果 - メルカリボックス 疑問・質問みんなで解決!

メルカリ利用規約を読んでみると確かに複数アカウント利用の禁止が述べられています。
第4条 ユーザー登録及びアカウント情報の「2.複数登録の禁止」

ユーザーおよびユーザー登録をされようとする方(以下併せて「ユーザー等」といいます)は、
複数のユーザー登録を行うことができないものとします。


また、併せて第8条 禁止事項で参照されている禁止事項にも明記されています。

複数アカウント利用を禁止する理由としては
  • 業者による転売行為の防止
  • ロボットプログラムによるスクレイピング行為蔓延の防止
  • さくら行為による特定アカウントの評価偽装の防止
辺りが理由ではないかと推測できます。

何を持って複数アカウント利用が検知されるかの考察

しかし複数アカウントで利用停止を食らった人の中にも
「端末を変えて利用」、「別なネットワーク環境から利用」にもかかわらず、
複数アカウントと認識されてしまったケースもあります。

メルカリでは一体どのようにして異なる環境からのアクセスを同一ユーザと判断しているのでしょうか?

Webページを利用者が閲覧する際にはHTTPプロトコルという通信規約が使われており、
この環境下でWebサーバ側では次のような限られた利用者の情報を取得することができます。
  1. IPアドレス/ドメイン
  2. OS/ブラウザ情報
  3. 画面サイズ
  4. 言語
  5. 通信ポート
  6. 参照元

1. IPアドレス/ドメイン
コンピュータのインターネット上の場所を特定するための住所または電話番号のようなものです。
例えば私の現在のIPアドレスとドメインは下記のとおりです。
IPアドレスとドメインは一対一で、IPアドレスが数字だけで人間に覚えづらいとして用意された変わりの識別子がドメインです。

IPアドレス:223.134.18.139
ドメイン:pdf86128b.tubecm00.ap.so-net.ne.jp

このIPアドレス/ドメインが分かると何処の国・都道府県・市区町村辺りまでだいたい特定できてしまいます。
一般的な家庭用のインターネット回線を利用しているとこのIPアドレスとドメインは変わりますが、一部のみであり、国・都道府県・市区町村を表す部分は変わらないことが多いです。

2. OS/ブラウザ
ユーザーエージェントといい、ブラウザがサーバに自分の利用環境を通知します。
例えば下記のようなものです。
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36

この情報から、利用中のOSとバージョン、ブラウザの種類とバージョンが分かります。
ただし、偽装可能です。

3.画面サイズ
1920×1080(24bit) のように利用中の端末の画面のサイズと解像度を通知します。

4.言語
ja,en-US;q=0.9,en;q=0.8,id;q=0.7,zh-CN;q=0.6,zh;q=0.5,zh-TW;q=0.4
のように、ブラウザに設定されている言語とその優先順位を通知します。

5.通信ポート
52290のようにクライアント端末が利用している通信ポートを通知します。
※コンピュータ上の内線番号見たいなものと思ってください。

6.参照元
どのサイトからアクセスされたかを通知します。

おそらく1〜5の情報に「ページを移動する間隔」や「検索・よく見るページの傾向」などを加え、
異なるアカウント間の相関値を算出し、その値が一定値を超えた時点で同一アカウントと判断しているのではないかと推測できます。

どうすれば利用停止にならずに複数アカウントを利用できるか?

理屈はいいとして「どうやれば複数アカウントと検知されずに複数アカウントが利用できるの?」と思われるでしょう。

これはサービスの不正利用ではなく、あくまで技術上の好奇心からの推測ですが、
同一アカウントと判断しうる要因としてIPアドレス/ドメインの情報が大きいと思います。
同じ人が物理的に離れた場所で同時刻にアクセスできるのは不可能であると考えるのが妥当であるためです。

そうなるとこのIPアドレス/ドメインの壁をいかに乗り越えるかですが、離れた場所のネットワークを介してアクセスすれば可能です。
VPNなどの方法もありますが結構お金がかかります。
一番手っ取り早い方法はリモートデスクトップを使って遠隔地のPCにログインし、利用するという方法です。

「職場のPCでアカウントA、離れた場所にある自宅のPCでアカウントB」を同時に利用する形になります。

ただし、これで確実に同一アカウントのジャッジを回避できる保証はありません。
今後AIの進歩でおそらく利用者の行動パターンから同一アカウントと検知する仕組みが実現可能になるはずです。

あと、あまり過激なことをやるとユーザ登録の取り消しになるみたいなのでご注意ください。

PHPでSSLサイトから他ドメインのファイル読み込む方法

2018-11-03
下記を読み込むファイルの先頭行に書く。
<php
// 全てのドメインからのアクセスを許可する
header("Access-Control-Allow-Origin: *");
?>


特定のドメインからのみアクセスを許可する場合は下記のように書く。
<php
// http://commonld.comからのアクセスのみ許可する
header("Access-Control-Allow-Origin: *");
?>


CORS (Cross-Origin Resource Sharing)

オリジン間リソース共有Cross-Origin Resource Sharing (CORS) と言うもので、追加の HTTP ヘッダーを使用して、あるドメイン(オリジン)で動作しているウェブアプリケーションに、異なるドメイン(オリジン)にあるリソースへのアクセスを許可することができる仕組み。

お気軽にお問合せください

0532-74-8756
愛知県を中心に静岡県・岐阜県の東海三県を主に対応しております。
  • 名古屋市
  • 浜松市
  • 岐阜市
  • 豊橋市
  • 岡崎市
  • 一宮市
  • 瀬戸市
  • 半田市
  • 春日井市
  • 豊川市
  • 津島市
  • 碧南市
  • 刈谷市
  • 豊田市
  • 安城市
  • 西尾市
  • 蒲郡市
  • 犬山市
  • 常滑市
  • 江南市
  • 小牧市
  • 稲沢市
  • 新城市
  • 東海市
  • 大府市
  • 知多市
  • 知立市
  • 尾張旭市
  • 高浜市
  • 岩倉市
  • 豊明市
  • 日進市
  • 田原市
  • 愛西市
  • 清須市
  • 北名古屋市
  • 弥富市
  • みよし市
  • あま市
  • 長久手市